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

Come calcolare il totale cumulativo in MySQL

Molte volte potrebbe essere necessario calcolare il totale parziale o il totale cumulativo per una colonna specifica, ad esempio le vendite. Poiché non esiste una funzione per calcolare il totale cumulativo in MySQL, è necessario eseguirlo tramite query SQL. Ecco una query SQL per calcolare il totale cumulativo in MySQL.

Come calcolare il totale cumulativo in MySQL

Ecco come calcolare il totale cumulativo in MySQL. Supponiamo che tu abbia la seguente tabella che contiene i dati sulle vendite giornaliere.

mysql> create table sales(order_date date,sale int);

mysql> insert into sales values('2020-01-01',20),
('2020-01-02',25),('2020-01-03',15),('2020-01-04',30),('2020-01-05',20);

mysql> select * from sales;
+------------+------+
| order_date | sale |
+------------+------+
| 2020-01-01 |   20 |
| 2020-01-02 |   25 |
| 2020-01-03 |   15 |
| 2020-01-04 |   30 |
| 2020-01-05 |   20 |
+------------+------+

Supponiamo che tu voglia calcolare la somma cumulativa delle vendite, in questo modo,

+------------+------+-----------------+
| order_date | sale | cumulative_sale |
+------------+------+-----------------+
| 2020-01-01 |   20 |              20 |
| 2020-01-02 |   25 |              45 |
| 2020-01-03 |   15 |              60 |
| 2020-01-04 |   30 |              90 |
| 2020-01-05 |   20 |             110 |
+------------+------+-----------------+

Ecco la query SQL per calcolare la somma cumulativa in MySQL.

mysql> set @csum := 0;
mysql> select order_date,sale, (@csum := @csum + sale) as cumulative_sale
       from sales
       order by order_date;
+------------+------+-----------------+
| order_date | sale | cumulative_sale |
+------------+------+-----------------+
| 2020-01-01 |   20 |              20 |
| 2020-01-02 |   25 |              45 |
| 2020-01-03 |   15 |              60 |
| 2020-01-04 |   30 |              90 |
| 2020-01-05 |   20 |             110 |
+------------+------+-----------------+

Bonus letto: Come creare una tabella pivot in MySQL

Nella query precedente, impostiamo una variabile temporanea csum su 0. Quindi per ogni riga la utilizziamo per calcolare e memorizzare la somma cumulativa.

Tieni presente che questa somma cumulativa non è memorizzata in nessuna colonna. Viene semplicemente visualizzato nel risultato.

Se desideri memorizzare questo valore, devi aggiungere una nuova colonna alla tabella e utilizzare la clausola UPDATE come mostrato di seguito.

mysql> alter table sales add column cumulative_sum int;

mysql> set @csum := 0;

mysql> update sales
       set cumulative_sum = (@csum := @csum + sale)
       order by order_date;

mysql> select order_date,sale,cumulative_sum from sales;
+------------+------+----------------+
| order_date | sale | cumulative_sum |
+------------+------+----------------+
| 2020-01-01 |   20 |             20 |
| 2020-01-02 |   25 |             45 |
| 2020-01-03 |   15 |             60 |
| 2020-01-04 |   30 |             90 |
| 2020-01-05 |   20 |            110 |
+------------+------+----------------+

Puoi personalizzare la tua query SQL per includere filtri utilizzando la clausola WHERE o JOINS, come mostrato di seguito

mysql> set @csum := 0;
mysql> select order_date,sale, (@csum := @csum + sale) as cumulative_sale
       from sales where <condition>
       order by order_date;

Bonus Leggi: Come calcolare la mediana in MySQL

Poiché MySQL non offre funzioni integrate per la somma cumulativa, puoi utilizzare la query SQL sopra per calcolare il totale cumulativo in MySQL.

Dopo aver calcolato il totale cumulativo in MySQL, puoi utilizzare uno strumento di creazione di grafici facilmente tracciandoli come un grafico a linee o un grafico a barre, come mostrato di seguito. Ecco un esempio di grafico creato utilizzando Ubiq.

Se vuoi creare grafici, dashboard e report dal database MySQL, puoi provare Ubiq. Offriamo una prova gratuita di 14 giorni.