Usando uma consulta correlacionada:
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
Usando variáveis do 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
Observação:
- O
JOIN (SELECT @running_total := 0) r
é uma junção cruzada e permite a declaração de variáveis sem exigir umSET
separado comando. - O alias da tabela,
r
, é exigido pelo MySQL para qualquer subconsulta/tabela derivada/visualização em linha
Ressalvas:
- Especifico do MySQL; não é portátil para outros bancos de dados
- O
ORDER BY
é importante; ele garante que a ordem corresponda ao OP e pode ter implicações maiores para o uso de variáveis mais complicado (IE:funcionalidade psuedo ROW_NUMBER/RANK, que o MySQL não possui)