Maand-op-maand-groei is een nuttige zakelijke KPI voor maand-op-maand vergelijking van verkopen, aanmeldingen, enz. We zullen de maandelijkse procentuele groei berekenen via SQL-query, aangezien er geen PostgreSQL-functie voor is. Hier leest u hoe u de groei van maand tot maand in PostgreSQL kunt berekenen.
Hoe de groei van maand tot maand in PostgreSQL te berekenen
Stel dat u een tabel heeft met maandelijkse verkopen genaamd 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
Hier is de SQL-query om de procentuele groei van de verkoop in PostgreSQL van maand tot maand te berekenen.
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%
In de bovenstaande query gebruiken we de LAG-vensterfunctie om de verkopen van de vorige maand te berekenen en om de groei van maand tot maand in PostgreSQL te berekenen. Met LAG kunt u de rij ophalen die vóór de huidige rij komt, met een gedefinieerde offset, wat in ons geval 1 is.
Lees bonus: Hoe maak je een draaitabel in PostgreSQL
In de meeste gevallen heeft u dagelijkse verkoopgegevens in plaats van maandelijkse cijfers. In dit geval aggregeren we het eerst tot maandelijkse verkoopcijfers en passen we vervolgens de bovenstaande SQL-query toe om de groei van maand tot maand in PostgreSQL te berekenen.
Stel dat u dagelijkse verkoopgegevens heeft.
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 |
Hier is de SQL-query om de maandelijkse groeisnelheid in PostgreSQL te berekenen
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%
In de bovenstaande zoekopdracht voegen we de dagelijkse verkoopgegevens samen tot maandelijkse waarden (in vet ) en gebruik dan een eerdere zoekopdracht.
U kunt uw gegevens ook filteren met behulp van een WHERE-clausule voordat u de groei van maand tot maand in PostgreSQL berekent.
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;
Nadat u de groei van maand tot maand in PostgreSQL hebt berekend, kunt u een rapportagetool gebruiken om deze gegevens in een staafdiagram of dashboard uit te zetten en met uw team te delen. Hier is een voorbeeld van een staafdiagram dat de procentuele groei van maand tot maand laat zien, gemaakt met Ubiq.
Als u grafieken, dashboards en rapporten wilt maken vanuit de PostgreSQL-database, kunt u Ubiq proberen. We bieden een gratis proefperiode van 14 dagen aan.