Mysql
 sql >> Database >  >> RDS >> Mysql

Crea una colonna di somma cumulativa in MySQL

Utilizzo di una query correlata:

  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

Utilizzo delle variabili 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

Nota:

  • Il JOIN (SELECT @running_total := 0) r è un cross join e consente la dichiarazione di variabili senza richiedere un SET separato comando.
  • L'alias della tabella, r , è richiesto da MySQL per qualsiasi sottoquery/tabella derivata/visualizzazione inline

Avvertenze:

  • Specifico per MySQL; non portabile ad altri database
  • Il ORDER BY è importante; assicura che l'ordine corrisponda all'OP e può avere implicazioni maggiori per un utilizzo di variabili più complicato (IE:funzionalità psuedo ROW_NUMBER/RANK, che manca a MySQL)