sql >> Databáze >  >> RDS >> Mysql

Vytvořte sloupec kumulativního součtu v MySQL

Použití korelovaného dotazu:

  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

Použití proměnných 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

Poznámka:

  • The JOIN (SELECT @running_total := 0) r je křížové spojení a umožňuje deklaraci proměnné bez nutnosti samostatné SET příkaz.
  • Alias ​​tabulky r , je vyžadován MySQL pro jakýkoli poddotaz/odvozenou tabulku/inline zobrazení

Upozornění:

  • Specifické pro MySQL; nelze přenést do jiných databází
  • Položka ORDER BY je důležité; zajišťuje, že objednávka odpovídá OP a může mít větší důsledky pro složitější použití proměnných (IE:psuedo ROW_NUMBER/RANK funkčnost, kterou MySQL postrádá)


  1. Postgresql - zálohování databáze a obnova u jiného vlastníka?

  2. Jak Pi() funguje v PostgreSQL

  3. MySQL ekvivalent ORACLES rank()

  4. SQL Server na Linuxu