sql / intermediate
Snippet
Berechnung fortlaufender Summen mit Fensterfunktionen
Fensterfunktionen führen Berechnungen über eine Reihe von Tabellenzeilen durch, die sich auf die aktuelle Zeile beziehen, ohne das Ergebnis zu einer einzigen Zeile zusammenzufassen. Die OVER-Klausel in Kombination mit PARTITION BY und ORDER BY erzeugt eine fortlaufende Gesamtsumme pro Konto im Zeitverlauf.
snippet.sql
sql
1
2
3
4
5
6
7
8
9
10
SELECTtransaction_id,account_id,amount,SUM(amount) OVER (PARTITION BY account_idORDER BY transaction_dateROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS running_balanceFROM transactions;
Erklärung
1
SUM(amount) OVER (
Startet eine fensterbasierte Summation über einen bestimmten Zeilenbereich.
2
PARTITION BY account_id
Setzt die Berechnungsgrenze für jede eindeutige Kontonummer zurück.
3
ORDER BY transaction_date
Sortiert die Datensätze chronologisch, um den Kontostand fortlaufend zu berechnen.
4
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
Definiert den Bereich von der ersten Zeile der Partition bis zum aktuellen Datensatz.