Utilizzo di una query correlata:
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
Utilizzo delle variabili 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
Nota:
- Il
JOIN (SELECT @running_total := 0) r
è un cross join e consente la dichiarazione di variabili senza richiedere unSET
separato comando. - L'alias della tabella,
r
, è richiesto da MySQL per qualsiasi sottoquery/tabella derivata/visualizzazione inline
Avvertenze:
- Specifico per MySQL; non portabile ad altri database
- Il
ORDER BY
è importante; assicura che l'ordine corrisponda all'OP e può avere implicazioni maggiori per un utilizzo di variabili più complicato (IE:funzionalità psuedo ROW_NUMBER/RANK, che manca a MySQL)