zusammenfassen - sql summe mehrere zeilen



SQL: Aggregieren von Datensätzen innerhalb einer Gruppe unter Berücksichtigung der Zeilenreihenfolge (1)

Ich habe eine Tabelle der folgenden Struktur

| 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 |

und müssen die Summe in der Spalte "b" innerhalb jeder Gruppe in der Spalte "a" berechnen, jedoch unter Berücksichtigung der Reihenfolge der Zeilen, dh zuerst sollten wir 1 + 5 für a == 1 hinzufügen ( id s 1 und 2 ), dann fügen wir 2 + 3 + 5 für a = 2 ( id s 3, 4, 5) und so weiter.

Also muss ich im Ergebnis den Tisch so haben

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

Bitte helfen Sie eine SQL-Abfrage zu schreiben, um dies zu tun.


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)  
;          

Ps
Ich zähle nicht auf ID, um eine kontinuierliche zu sein





pyspark-sql