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

Come calcolare la crescita percentuale settimana dopo settimana in MySQL

Il monitoraggio della percentuale di crescita settimana dopo settimana è un modo utile per monitorare le tendenze di crescita settimanali della tua attività. Ecco come calcolare la crescita percentuale settimana dopo settimana in MySQL. Può essere utilizzato per calcolare la variazione di settimana in settimana in SQL per qualsiasi metrica.

Come calcolare la crescita percentuale settimana dopo settimana in MySQL

Ecco i passaggi per calcolare la crescita percentuale settimana dopo settimana in MySQL. Supponiamo che tu abbia una tabella vendite_settimanali(settimana,saldi) che contiene i numeri delle vendite settimanali, come mostrato di seguito.

mysql> create table weekly_sales(week int, sale int);

mysql> insert into weekly_sales(week,sale) 
       values(1,20),(2,30),(3,25),(4,45),(5,25);

mysql> select * from weekly_sales;
+------+------+
| week | sale |
+------+------+
|    1 |   20 |
|    2 |   30 |
|    3 |   25 |
|    4 |   45 |
|    5 |   25 |
+------+------+

Puoi calcolare la crescita percentuale di settimana in settimana utilizzando la seguente query SQL per la percentuale di crescita.

mysql> select week, 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 week, sum(sale) sale
         from   weekly_sales
         group by week) y;
+------+------+-------------+---------------------+
| week | 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 settimana, memorizziamo i dati della settimana precedente in una variabile temporanea chiamata last_entry e usalo per calcolare la crescita percentuale.

Bonus Leggi: Come calcolare la percentuale di due colonne in MySQL

Tuttavia, nella maggior parte dei casi, avrai dati sulle vendite giornaliere anziché sulle vendite settimanali. Quindi, in tal caso, devi prima aggregarlo alle vendite settimanali e quindi utilizzare la query precedente per calcolare la crescita percentuale settimana dopo settimana.

Supponiamo che tu abbia una tabella di dati sulle vendite giornaliere sales(order_date, sale)

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

mysql>insert into sales(order_date,sale)
values('2020-01-01',10),('2020-01-02',12),('2020-01-03',15),
('2020-01-04',11),('2020-01-05',13),('2020-01-06',9),
('2020-01-07',21),('2020-01-08',10),('2020-01-09',10),
('2020-01-10',2),('2020-01-11',16),('2020-01-12',12),
('2020-01-13',10),('2020-01-14',18),('2020-01-15',15),
('2020-01-16',12),('2020-01-17',10),('2020-01-18',18),
('2020-01-19',14),('2020-01-20',16),('2020-01-21',12),
('2020-01-22',21),('2020-01-23',13),('2020-01-24',15),
('2020-01-25',20),('2020-01-26',14),('2020-01-27',16),
('2020-01-28',15),('2020-01-29',10),('2020-01-30',18);

mysql>select * from sales;
+------------+------+
| order_date | sale |
+------------+------+
| 2020-01-01 |   10 |
| 2020-01-02 |   12 |
| 2020-01-03 |   15 |
| 2020-01-04 |   11 |
| 2020-01-05 |   13 |
| 2020-01-06 |    9 |
| 2020-01-07 |   21 |
| 2020-01-08 |   10 |
| 2020-01-09 |   10 |
| ...        |   ...|
+------------+------+

Supponiamo che tu voglia calcolare la crescita percentuale settimana dopo settimana, ecco l'SQL per la variazione percentuale nel tempo.

mysql> select week, 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 week, sum(sale) sale
            from   (select week(order_date) as week,sum(sale) as sale
                    from sales group by week(order_date)) weekly_sales
            group by week) y;
+------+------+-------------+---------------------+
| week | sale | growth rate | @last_entry := sale |
+------+------+-------------+---------------------+
|    0 |   48 |           0 |                  48 |
|    1 |   81 |       68.75 |                  81 |
|    2 |   95 |       17.28 |                  95 |
|    3 |  111 |       16.84 |                 111 |
|    4 |   73 |      -34.23 |                  73 |
+------+------+-------------+---------------------+

Nella query precedente, aggreghiamo innanzitutto le vendite giornaliere in vendite settimanali (in grassetto )e quindi utilizzare la query precedente per calcolare la crescita percentuale settimana dopo settimana.

Bonus Leggi: Come calcolare la percentuale di una colonna in MySQL

Se desideri filtrare i dati utilizzati per la tua query, puoi aggiungere una clausola WHERE nella tua query come mostrato di seguito

mysql> select week, 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 week, sum(sale) sale
            from   (select week(order_date) as week,sum(sale) as sale
                    from sales 
                    WHERE condition
                    group by week(order_date)) weekly_sales
            group by week) y;

Tieni presente che, poiché il calcolo della crescita percentuale settimana su settimana dipende dalla memorizzazione del valore della riga precedente in una variabile temporanea, assicurati che la tabella sia già ordinata in ordine crescente di numeri settimanali. Altrimenti potrebbe dare risultati sbagliati.

Dopo aver calcolato la crescita percentuale settimana dopo settimana, puoi utilizzare uno strumento di creazione di grafici per tracciare il risultato in un grafico a barre e condividerlo con il tuo team. Ecco un esempio di grafico a barre che mostra la variazione percentuale nel tempo, creato utilizzando Ubiq.

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