PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

So berechnen Sie das Wachstum von Monat zu Monat in PostgreSQL

Das Wachstum von Monat zu Monat ist ein nützlicher KPI für Geschäftsmetriken für den Vergleich von Verkäufen, Anmeldungen usw. von Monat zu Monat. Wir berechnen das monatliche prozentuale Wachstum über eine SQL-Abfrage, da es dafür keine PostgreSQL-Funktion gibt. So berechnen Sie das Wachstum von Monat zu Monat in PostgreSQL.

So berechnen Sie das Wachstum von Monat zu Monat in PostgreSQL

Angenommen, Sie haben eine Tabelle namens sales_data(month, sale), die monatliche Verkäufe enthält

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 ist die SQL-Abfrage zur Berechnung des prozentualen Umsatzwachstums von Monat zu Monat 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%

In der obigen Abfrage verwenden wir die LAG-Fensterfunktion, um die Verkäufe des Vormonats zu berechnen, und verwenden sie, um das Wachstum von Monat zu Monat in PostgreSQL zu berechnen. Mit LAG können Sie die Zeile abrufen, die vor der aktuellen Zeile an einem definierten Offset liegt, der in unserem Fall 1 ist.

Bonuslektüre: So erstellen Sie eine Pivot-Tabelle in PostgreSQL

In den meisten Fällen haben Sie tägliche Verkaufsdaten anstelle von monatlichen Zahlen. In diesem Fall aggregieren wir sie zunächst zu monatlichen Verkaufszahlen und wenden dann die obige SQL-Abfrage an, um das monatliche Wachstum in PostgreSQL zu berechnen.

Angenommen, Sie haben tägliche Verkaufsdaten.

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 ist die SQL-Abfrage zur Berechnung der monatlichen Wachstumsrate 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%

In der obigen Abfrage aggregieren wir die täglichen Verkaufsdaten zu monatlichen Werten (fett ) und verwenden Sie dann eine frühere Abfrage.

Sie können Ihre Daten auch mithilfe einer WHERE-Klausel filtern, bevor Sie das monatliche Wachstum in PostgreSQL berechnen.

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;

Nachdem Sie das monatliche Wachstum in PostgreSQL berechnet haben, können Sie diese Daten mit einem Berichtstool in einem Balkendiagramm oder Dashboard darstellen und mit Ihrem Team teilen. Hier ist ein Beispiel für ein Balkendiagramm, das das prozentuale Wachstum von Monat zu Monat zeigt, erstellt mit Ubiq.

Wenn Sie Diagramme, Dashboards und Berichte aus der PostgreSQL-Datenbank erstellen möchten, können Sie Ubiq ausprobieren. Wir bieten eine 14-tägige kostenlose Testversion an.