PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Cara Menghitung Pertumbuhan Bulan ke Bulan di PostgreSQL

Pertumbuhan Bulan ke Bulan adalah KPI metrik bisnis yang berguna untuk perbandingan bulan ke bulan dari penjualan, pendaftaran, dll. Kami akan menghitung persentase pertumbuhan bulanan melalui kueri SQL, karena tidak ada fungsi PostgreSQL untuk itu. Berikut cara menghitung pertumbuhan bulan ke bulan di PostgreSQL.

Cara Menghitung Pertumbuhan Bulan ke Bulan di PostgreSQL

Katakanlah Anda memiliki tabel yang berisi penjualan bulanan yang disebut data_penjualan(bulan, penjualan)

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

Berikut kueri SQL untuk menghitung persentase pertumbuhan penjualan dari bulan ke bulan di 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%

Dalam kueri di atas, kami menggunakan fungsi jendela LAG untuk menghitung penjualan bulan sebelumnya, dan menggunakannya untuk menghitung pertumbuhan bulan ke bulan di PostgreSQL. LAG memungkinkan Anda mengambil baris yang muncul sebelum baris saat ini, pada offset yang ditentukan, yaitu 1 dalam kasus kami.

Bonus baca: Cara Membuat Tabel Pivot di PostgreSQL

Dalam kebanyakan kasus, Anda akan memiliki data penjualan harian, bukan angka bulanan. Dalam hal ini, pertama-tama kami menggabungkannya ke angka penjualan bulanan dan kemudian menerapkan kueri SQL di atas untuk menghitung pertumbuhan bulan ke bulan di PostgreSQL.

Katakanlah Anda memiliki data penjualan harian.

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 |

Berikut kueri SQL untuk menghitung tingkat pertumbuhan bulanan di 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%

Dalam kueri di atas, kami menggabungkan data penjualan harian ke nilai bulanan (dalam tebal ) lalu gunakan kueri sebelumnya.

Anda juga dapat memfilter data Anda, menggunakan klausa WHERE, sebelum menghitung pertumbuhan bulan ke bulan di 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;

Setelah Anda menghitung pertumbuhan bulan ke bulan di PostgreSQL, Anda dapat menggunakan alat pelaporan untuk memplot data ini pada diagram batang atau dasbor dan membagikannya dengan tim Anda. Berikut adalah contoh diagram batang yang menunjukkan persentase pertumbuhan dari bulan ke bulan, dibuat menggunakan Ubiq.

Jika Anda ingin membuat grafik, dasbor &laporan dari database PostgreSQL, Anda dapat mencoba Ubiq. Kami menawarkan uji coba gratis selama 14 hari.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL di mana semua dalam array

  2. Menggunakan periode variabel dalam interval di Postgres

  3. Instalasi PostgreSQL 9 di Windows:Tidak dapat menulis di dalam jalur lingkungan TEMP.

  4. Masalah untuk penyisipan menggunakan psycopg

  5. Buat pengguna:tidak dapat terhubung ke database postgres:FATAL:peran tom tidak ada