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

Come calcolare il totale parziale in MySQL

MySQL non ha una funzione per calcolare il totale cumulativo, noto anche come totale parziale. È necessario scrivere una query SQL per calcolare la somma cumulativa in MySQL. Quindi diamo un'occhiata a una query SQL per calcolare il totale parziale in MySQL.

Come calcolare il totale parziale in MySQL

Ecco come calcolare il totale parziale in MySQL. Supponiamo che tu abbia la seguente tabella che contiene le 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 il totale parziale, per questa tabella, 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 |
+------------+------+-----------------+

Bonus Leggi: Come concatenare più righe in un campo in MySQL

Ecco la query SQL per calcolare il totale parziale 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 |
+------------+------+-----------------+

Nella query precedente, impostiamo prima una variabile definita dall'utente csum su 0. La usiamo per memorizzare il totale parziale di ogni riga. È importante notare che csum non è memorizzato in nessuna tabella. Viene semplicemente utilizzato per visualizzare i valori del totale parziale.

Se desideri memorizzare questo totale parziale, puoi aggiungere una nuova colonna alla tabella e utilizzare la clausola UPDATE per memorizzare i valori totali parziali.

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 |
+------------+------+----------------+

Bonus Leggi: Come aggiungere la riga totale in MySQL

Puoi anche personalizzare la tua query SQL utilizzando la clausola WHERE o JOINS, come mostrato,

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


Poiché MySQL non offre alcuna funzione integrata per il totale parziale, puoi utilizzare la query SQL sopra per il totale parziale in MySQL. Puoi anche utilizzare MESE(data_ordine) invece di data_ordine sopra se vuoi scrivere SQL per la somma cumulativa per mese.

Una volta calcolato il totale parziale, puoi utilizzare uno strumento di creazione di grafici per tracciare questi dati in un grafico a linee e condividerli con il tuo team. Ecco un esempio di un grafico a linee che mostra il totale parziale, creato utilizzando Ubiq.

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