sql >> Database >  >> RDS >> Mysql

MySQL SELECT-functie om huidige gegevens op te tellen

Dit wordt cumulatieve som genoemd.

In Oracle en PostgreSQL , het wordt berekend met behulp van een vensterfunctie:

SELECT  id, val, SUM() OVER (ORDER BY id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
FROM    mytable

Echter, MySQL ondersteunt het niet.

In MySQL , je kunt het berekenen met sessievariabelen:

SET @s = 0;

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

of op een pure set-gebaseerde maar minder efficiënte manier:

SELECT  t1.id, t1.val, SUM(t2.val)
FROM    mytable t1
JOIN    mytable t2
ON      t2.id <= t1.id
GROUP BY
        t1.id
;


  1. waarom haalt dit geen gegevens van 7 dagen terug?

  2. Hoe de ORA-00936 ontbrekende uitdrukking op te lossen?

  3. Sorteren in SQL Server

  4. mysql join-queryvolgorde in twee kolommen