Laufende Summe
Teil des Abschnitts Über die Grundlagen hinaus der SQL-Journey von Coddy — Lektion 25 von 27.
Eine laufende (kumulative) Summe ist SUM über ein Fenster mit ORDER BY: das verwandelt das Aggregat in eines, das Zeile für Zeile wächst.
SELECT day, amount,
SUM(amount) OVER (ORDER BY day) AS running_total
FROM revenueOhne ORDER BY deckt das Fenster jede Zeile ab und man erhält die Gesamtsumme in jeder Zeile. Mit ihr erweitert sich das Fenster in dieser Reihenfolge um jeweils eine Zeile, sodass jede Zeile nur sich selbst und alles davor sieht.
Fügen Sie ein PARTITION BY hinzu, um die laufende Summe pro Gruppe zurückzusetzen, z. B. die laufende Summe des Umsatzes pro Region, Tag für Tag.
Aufgabe
EinfachVerfügbare Tabellen und Spalten:
<strong>revenue</strong>:<strong>region</strong>,<strong>day</strong>,<strong>amount</strong>
Geben Sie region, day, amount und region_running_total zurück: den kumulativen amount für diese Region bis einschließlich dieses Tages. Die laufende Summe sollte für jede Region neu beginnen.
Verwenden Sie PARTITION BY für das Window. Sortieren Sie nach region, dann nach day.
Spickzettel
Eine laufende (kumulative) Summe verwendet SUM mit ORDER BY im Fenster — das Fenster erweitert sich Zeile für Zeile in dieser Reihenfolge:
SELECT day, amount,
SUM(amount) OVER (ORDER BY day) AS running_total
FROM revenueFügen Sie PARTITION BY hinzu, um die laufende Summe pro Gruppe zurückzusetzen:
SELECT region, day, amount,
SUM(amount) OVER (PARTITION BY region ORDER BY day) AS region_running_total
FROM revenue
ORDER BY region, dayProbier es selbst
SELECT region, day, amount,
-- SUM(amount) OVER (PARTITION BY region ORDER BY day)
FROM revenue
ORDER BY region, day
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.