sql - एसक्यूएल: खाते की पंक्तियों के क्रम में एक समूह के भीतर कुल अभिलेख



postgresql group-by (1)

मेरे पास निम्न संरचना की एक तालिका है

| id | a | b |
| 1  | 1 | 1 |
| 2  | 1 | 5 |
| 3  | 2 | 2 |
| 4  | 2 | 3 |
| 5  | 2 | 5 |
| 6  | 1 | 3 |
| 7  | 1 | 7 |
| 8  | 3 | 1 |
| 9  | 2 | 0 |
| 10 | 4 | 8 |

और कॉलम "ए" में प्रत्येक समूह के भीतर कॉलम "बी" में राशि की गणना करने की आवश्यकता है, लेकिन पंक्तियों के क्रम को ध्यान में रखते हुए, पहले हमें a == 1 ( id 1 और 2 के लिए 1 + 5 जोड़ना चाहिए) ), तो हम a = 2 ( id 3, 4, 5) और इसी तरह के लिए 2 + 3 + 5 जोड़ देंगे।

इस प्रकार, परिणाम में मुझे इस तरह की तालिका होना चाहिए

| a | sum(b) |
| 1 |   6    |
| 2 |   10   |
| 1 |   10   |
| 3 |   1    |
| 2 |   0    |
| 4 |   8    |

कृपया ऐसा करने के लिए SQL क्वेरी लिखने में मदद करें।


select      a,sum(b)

from       (select   *
                    ,row_number () over (order by id)                as rn
                    ,row_number () over (partition by a order by id) as rnp

            from     t
            ) t

group by    a,rn - rnp    

order by    min(id)  
;          

पी.एस.
मैं एक निरंतर होने के लिए आईडी पर भरोसा नहीं कर रहा हूँ





pyspark-sql