Použití korelovaného dotazu:
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
Použití proměnných MySQL:
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
Poznámka:
- The
JOIN (SELECT @running_total := 0) r
je křížové spojení a umožňuje deklaraci proměnné bez nutnosti samostatnéSET
příkaz. - Alias tabulky
r
, je vyžadován MySQL pro jakýkoli poddotaz/odvozenou tabulku/inline zobrazení
Upozornění:
- Specifické pro MySQL; nelze přenést do jiných databází
- Položka
ORDER BY
je důležité; zajišťuje, že objednávka odpovídá OP a může mít větší důsledky pro složitější použití proměnných (IE:psuedo ROW_NUMBER/RANK funkčnost, kterou MySQL postrádá)