sql >> Databasteknik >  >> RDS >> Mysql

MySQL SELECT-funktion för att summera aktuell data

Detta kallas kumulativ summa.

I Oracle och PostgreSQL , beräknas den med hjälp av en fönsterfunktion:

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

Men MySQL stöder det inte.

I MySQL , kan du beräkna det med hjälp av sessionsvariabler:

SET @s = 0;

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

eller på ett rent set-baserat men mindre effektivt sätt:

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


  1. Hur man beviljar alla privilegier på vyer till godtyckliga användare

  2. Hur man bulkinfogar i mySql och node.js med mysljs

  3. ORA-00904 ogiltig identifierare på avkodningsalias

  4. Hur man använder MySQL Rollup