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

Come calcolare la crescita percentuale mese per mese in MySQL

La crescita mese dopo mese è un indicatore chiave di performance per ogni azienda. Poiché in MySQL non esiste una funzione per calcolare la crescita percentuale mese per mese, è necessario scrivere una query SQL per calcolare la variazione di mese in mese. Vediamo quindi come calcolare la crescita percentuale mese per mese in MySQL. Puoi anche utilizzarlo per monitorare la variazione percentuale mensile nel corso del tempo nella tua attività.

Come calcolare la crescita percentuale mese per mese in MySQL

Supponiamo che tu abbia una tabella di dati month_sales(month,sale) che contiene le vendite mensili, come mostrato di seguito.

mysql> create table monthly_sales(month int,sale int);
mysql> insert into monthly_sales(month,sale) values(1,20),
(2,30),(3,25),(4,45),(5,25);
mysql> select * from monthly_sales;
+-------+------+
| month | sale |
+-------+------+
| 1     |   20 |
| 2     |   30 |
| 3     |   25 |
| 4     |   45 |
| 5     |   25 |
+-------+------+

Puoi calcolare la crescita percentuale mese per mese utilizzando il seguente SQL.

mysql> select month, sale,
    if(@last_entry = 0, 0, round(((sale - @last_entry) / @last_entry) * 100,2)) "growth rate",
    @last_entry := sale
    from
    (select @last_entry := 0) x,
    (select month, sum(sale) sale
    from   monthly_sales
    group by month) y;
+-------+------+-------------+---------------------+
| month | sale | growth rate | @last_entry := sale |
+-------+------+-------------+---------------------+
| 1     |   20 |           0 |                  20 |
| 2     |   30 |       50.00 |                  30 |
| 3     |   25 |      -16.67 |                  25 |
| 4     |   45 |       80.00 |                  45 |
| 5     |   25 |      -44.44 |                  25 |
+-------+------+-------------+---------------------+

Nella query precedente, per ogni riga(mese), memorizziamo la vendita del mese precedente in una variabile temporanea last_entry

Tuttavia, nella maggior parte dei casi, avrai dati sulle vendite giornaliere. In tal caso, devi prima aggregarlo alle vendite mensili, quindi calcolare il tasso di crescita percentuale mese per mese. Supponiamo che tu abbia una tabella dati vendite(created_at, sale) che contiene informazioni 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-02-05',20),('2020-02-10',20),('2020-02-06',25),
('2020-03-07',15),('2020-03-08',30),('2020-03-09',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-02-05 |   20 |
| 2020-02-10 |   20 |
| 2020-02-06 |   25 |
| 2020-03-07 |   15 |
| 2020-03-08 |   30 |
| 2020-03-09 |   20 |
+------------+------+

Supponiamo che tu voglia calcolare il tasso di crescita mensile, ecco la query SQL per questo.

mysql> select month, sale, 
       if(@last_entry = 0, 0, round(((sale - @last_entry) / @last_entry) * 100,2)) "growth rate",
       @last_entry := sale                  
from
      (select @last_entry := 0) x,
      (select month, sum(sale) sale
       from   (select month(order_date) as month,sum(sale) as sale 
               from sales group by month(order_date)) monthly_sales
       group by month) y;		

+-------+------+-------------+---------------------+
| month | sale | growth rate | @last_entry := sale |
+-------+------+-------------+---------------------+
|     1 |   90 |           0 |                  90 |
|     2 |   65 |      -27.78 |                  65 |
|     3 |   65 |        0.00 |                  65 |
+-------+------+-------------+---------------------+   

Nella query precedente, aggreghiamo prima le vendite giornaliere in valori mensili (mostrati in grassetto). ) e quindi utilizzare la query precedente per calcolare la crescita percentuale.

Bonus Leggi: Come calcolare le vendite medie giornaliere in MySQL

Se desideri filtrare i tuoi dati prima di calcolare la crescita percentuale mese per mese, puoi farlo aggiungendo la clausola WHERE alla tua query come mostrato di seguito

mysql> select month, sale, 
       if(@last_entry = 0, 0, round(((sale - @last_entry) / @last_entry) * 100,2)) "growth rate",
       @last_entry := sale                  
from
      (select @last_entry := 0) x,
      (select month, sum(sale) sale
       from   (select month(order_date) as month,sum(sale) as sale 
               from sales 
               WHERE condition
               group by month(order_date)) monthly_sales
       group by month) y;

Bonus Leggi: Come calcolare le vendite totali al mese in MySQL?

Nota :poiché il calcolo della crescita percentuale mese per mese si basa sul concetto di memorizzare il valore della riga precedente in una variabile temporanea, assicurati che la tabella sia ordinata in ordine crescente per mese (ad es. 1,2,3,ecc o 202001,202002 ,202003, ecc.). Altrimenti i tuoi dati potrebbero essere ordinati in ordine alfabetico e fornire risultati errati quando calcoli la crescita percentuale mese per mese in MySQL.

Puoi utilizzare uno strumento di reporting per tracciare questi dati su un grafico a barre o dashboard e condividerli con il tuo team. Ecco un esempio di un grafico a barre che mostra la crescita percentuale delle vendite mese su mese, creato utilizzando Ubiq.

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