Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Função MySQL SELECT para somar dados atuais


Isso é chamado de soma cumulativa.

Em Oracle e PostgreSQL , é calculado usando uma função de janela:
SELECT  id, val, SUM() OVER (ORDER BY id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
FROM    mytable

No entanto, MySQL não o suporta.

Em MySQL , você pode calculá-lo usando variáveis ​​de sessão:
SET @s = 0;

SELECT  id, val, @s := @s + val
FROM    mytable
ORDER BY
        id
;

ou de uma maneira puramente baseada em conjuntos, mas menos eficiente:
SELECT  t1.id, t1.val, SUM(t2.val)
FROM    mytable t1
JOIN    mytable t2
ON      t2.id <= t1.id
GROUP BY
        t1.id
;