PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Cách tính tăng trưởng hàng tháng trong PostgreSQL

Tăng trưởng hàng tháng là một KPI chỉ số kinh doanh hữu ích để so sánh hàng tháng giữa doanh số bán hàng, lượt đăng ký, v.v. Chúng tôi sẽ tính toán mức tăng trưởng phần trăm hàng tháng thông qua truy vấn SQL, vì không có hàm PostgreSQL cho nó. Dưới đây là cách tính toán mức tăng trưởng hàng tháng trong PostgreSQL.

Cách tính tăng trưởng hàng tháng trong PostgreSQL

Giả sử bạn có một bảng chứa doanh số hàng tháng được gọi là sales_data (tháng, giảm giá)

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

Đây là truy vấn SQL để tính toán phần trăm tăng trưởng hàng tháng trong doanh số bán hàng trong 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%

Trong truy vấn trên, chúng tôi sử dụng hàm cửa sổ LAG để tính toán doanh số bán hàng của tháng trước và sử dụng hàm này để tính toán mức tăng trưởng hàng tháng trong PostgreSQL. LAG cho phép bạn tìm nạp hàng đứng trước hàng hiện tại, ở một khoảng chênh lệch xác định, là 1 trong trường hợp của chúng tôi.

Phần thưởng đã đọc:Cách tạo Pivot Table trong PostgreSQL

Trong hầu hết các trường hợp, bạn sẽ có dữ liệu bán hàng hàng ngày, thay vì con số hàng tháng. Trong trường hợp này, trước tiên, chúng tôi tổng hợp nó thành số lượng bán hàng hàng tháng và sau đó áp dụng truy vấn SQL ở trên để tính toán mức tăng trưởng hàng tháng trong PostgreSQL.

Giả sử bạn có dữ liệu bán hàng hàng ngày.

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 |

Đây là truy vấn SQL để tính toán tốc độ tăng trưởng hàng tháng trong 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%

Trong truy vấn ở trên, chúng tôi tổng hợp dữ liệu bán hàng hàng ngày thành các giá trị hàng tháng (bằng in đậm ) và sau đó sử dụng truy vấn trước đó.

Bạn cũng có thể lọc dữ liệu của mình bằng mệnh đề WHERE trước khi tính toán mức tăng trưởng hàng tháng trong 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;

Sau khi bạn tính toán mức tăng trưởng hàng tháng trong PostgreSQL, bạn có thể sử dụng công cụ báo cáo để vẽ dữ liệu này trên biểu đồ thanh hoặc trang tổng quan và chia sẻ nó với nhóm của bạn. Dưới đây là một ví dụ về biểu đồ thanh thể hiện mức tăng trưởng theo phần trăm hàng tháng, được tạo bằng Ubiq.

Nếu bạn muốn tạo biểu đồ, trang tổng quan và báo cáo từ cơ sở dữ liệu PostgreSQL, bạn có thể thử Ubiq. Chúng tôi cung cấp bản dùng thử miễn phí 14 ngày.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tổng hợp kết nối cơ sở dữ liệu công nhân cần tây

  2. Chỉ mục trên Dấu thời gian:Các hàm trong biểu thức chỉ mục phải được đánh dấu là CÓ THỂ NGAY LẬP TỨC

  3. PHP không tải php_pgsql.dll trên Windows

  4. Hướng dẫn sử dụng pgBouncer cho PostgreSQL

  5. Kết nối postgresql với sqlalchemy