Verwendung einer korrelierten Abfrage:
SELECT t.id,
t.count,
(SELECT SUM(x.count)
FROM TABLE x
WHERE x.id <= t.id) AS cumulative_sum
FROM TABLE t
ORDER BY t.id
Verwendung von MySQL-Variablen:
SELECT t.id,
t.count,
@running_total := @running_total + t.count AS cumulative_sum
FROM TABLE t
JOIN (SELECT @running_total := 0) r
ORDER BY t.id
Hinweis:
- Der
JOIN (SELECT @running_total := 0) r
ist ein Cross Join und ermöglicht die Deklaration von Variablen, ohne dass ein separatesSET
erforderlich ist Befehl. - Der Tabellenalias,
r
, wird von MySQL für jede Unterabfrage/abgeleitete Tabelle/Inline-Ansicht benötigt
Vorbehalte:
- MySQL-spezifisch; nicht auf andere Datenbanken portierbar
- Der
ORDER BY
ist wichtig; es stellt sicher, dass die Reihenfolge mit dem OP übereinstimmt und kann größere Auswirkungen auf kompliziertere Variablenverwendungen haben (IE:Pseudo-ROW_NUMBER/RANK-Funktionalität, die MySQL fehlt)