La crescita mese dopo mese è un utile KPI della metrica aziendale per il confronto mese dopo mese di vendite, iscrizioni, ecc. Calcoleremo la crescita percentuale mensile tramite query SQL, poiché non esiste una funzione PostgreSQL per questo. Ecco come calcolare la crescita mese dopo mese in PostgreSQL.
Come calcolare la crescita mese dopo mese in PostgreSQL
Supponiamo che tu abbia una tabella che contiene le vendite mensili chiamata sales_data(month, sale)
postgres=# create table sales_data(month int,sale int); postgres=# insert into sales_data(month,sale) values(1,2021), (2,2102),(3,2150),(4,2312),(5,2425); postgres=# select * from sales_data; month | sale -------+------ 1 | 2021 2 | 2102 3 | 2150 4 | 2312 5 | 2425
Ecco la query SQL per calcolare la crescita percentuale mensile delle vendite in PostgreSQL.
postgres=# select month,sum(sale) as current_sale, lag(sum(sale), 1) over (order by month) as previous_month_sale, (100 * (sum(sale) - lag(sum(sale), 1) over (order by month)) / lag(sum(sale), 1) over (order by month)) || '%' as growth from sales_data group by 1 order by 1; month | current_sale | previous_month_sale | growth -------+--------------+---------------------+-------- 1 | 2021 | | 2 | 2102 | 2021 | 4% 3 | 2150 | 2102 | 2% 4 | 2312 | 2150 | 7% 5 | 2425 | 2312 | 4%
Nella query precedente, utilizziamo la funzione finestra LAG per calcolare le vendite del mese precedente e la usiamo per calcolare la crescita mese dopo mese in PostgreSQL. LAG ti consente di recuperare la riga che precede la riga attuale, con un offset definito, che nel nostro caso è 1.
Bonus letto: Come creare una tabella pivot in PostgreSQL
Nella maggior parte dei casi, avrai dati sulle vendite giornaliere, anziché numeri mensili. In questo caso, prima lo aggreghiamo ai numeri di vendita mensili e quindi applichiamo la query SQL sopra per calcolare la crescita mese dopo mese in PostgreSQL.
Supponiamo che tu disponga di dati sulle vendite giornaliere.
postgres=# create sales (order_date date, sale int); postgres=# 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); postgres=# 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 |
Ecco la query SQL per calcolare il tasso di crescita mensile in PostgreSQL
postgres=# select month,sum(sale) as current_sale, lag(sum(sale), 1) over (order by month) as previous_month_sale, round((100 * (sum(sale) - lag(sum(sale), 1) over (order by month)) / lag(sum(sale), 1) over (order by month)),2) || '%' as growth from (select to_char(order_date,'Mon') as month, sum(sale) as sale from sales group by 1 ) sales_data group by 1 order by 1; month | current_sale | previous_month_sale | growth -------+--------------+---------------------+--------- Feb | 65 | | Jan | 90 | 65 | 38.46% Mar | 65 | 90 | -27.78%
Nella query precedente, aggreghiamo i dati sulle vendite giornaliere in valori mensili (in grassetto ) e quindi utilizza la query precedente.
Puoi anche filtrare i tuoi dati, utilizzando una clausola WHERE, prima di calcolare la crescita di mese in mese in PostgreSQL.
postgres=# select month,sum(sale) as current_sale, lag(sum(sale), 1) over (order by month) as previous_month_sale, round((100 * (sum(sale) - lag(sum(sale), 1) over (order by month)) / lag(sum(sale), 1) over (order by month)),2) || '%' as growth from (select to_char(order_date,'Mon') as month, sum(sale) as sale from sales WHERE condition group by 1 ) sales_data group by 1 order by 1;
Dopo aver calcolato la crescita mese dopo mese in PostgreSQL, 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 mese su mese, creato utilizzando Ubiq.
Se vuoi creare grafici, dashboard e report dal database PostgreSQL, puoi provare Ubiq. Offriamo una prova gratuita di 14 giorni.