Brug af en korreleret forespørgsel:
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
Brug af MySQL-variabler:
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
Bemærk:
- Den
JOIN (SELECT @running_total :=0) r
er en krydskobling og giver mulighed for variabeldeklaration uden at kræve et separatSET
kommando. - Tabelaliaset,
r
, er påkrævet af MySQL for enhver underforespørgsel/afledt tabel/inline-visning
Forbehold:
- MySQL-specifik; kan ikke overføres til andre databaser
ORDER BY er vigtigt; det sikrer, at rækkefølgen matcher OP og kan have større implikationer for mere kompliceret variabel brug (dvs.:psuedo ROW_NUMBER/RANK funktionalitet, som MySQL mangler)