Tính toán giá trị trung bình giúp bạn tìm giá trị trung bình trong dữ liệu và tránh nhiễu do các giá trị cực trị. Dưới đây là cách tính giá trị trung bình trong PostgreSQL bằng cách sử dụng percentile_cont vì không có hàm nào để tính giá trị trung bình trong PostgreSQL
Cách tính giá trị trung bình trong PostgreSQL
Chúng tôi sẽ tính giá trị trung bình trong PostgreSQL bằng cách tính toán giá trị phân vị thứ 50, vì không có hàm tích hợp nào để tính giá trị trung bình trong PostgreSQL.
Giả sử bạn có bảng sau doanh số (ngày_đặt_hàng, số tiền)
postgres=# create table sales(order_date date,sale int); postgres=# insert into sales values('2020-04-01',210), ('2020-04-02',125),('2020-04-03',150),('2020-04-04',230), ('2020-04-05',200),('2020-04-10',220),('2020-04-06',25), ('2020-04-07',215),('2020-04-08',300),('2020-04-09',250); postgres=# select * from sales; order_date | sale ------------+------ 2020-04-01 | 210 2020-04-02 | 125 2020-04-03 | 150 2020-04-04 | 230 2020-04-05 | 200 2020-04-10 | 220 2020-04-06 | 25 2020-04-07 | 215 2020-04-08 | 300 2020-04-09 | 250
Phần thưởng đã đọc:Cách tính toán trung bình động trong PostgreSQL
Đây là truy vấn để tìm giá trị trung bình, tức là tính toán phần trăm thứ 50 trong PostgreSQL.
postgres=# SELECT PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_cont ----------------- 212.5
Trong truy vấn trên, chúng tôi sử dụng percentile_cont hàm cho phép bạn xác định phân vị nào (ví dụ:0,5 là phân vị thứ 50) mà bạn muốn tính toán. Sau đó, chúng tôi cũng sử dụng mệnh đề WITHIN GROUP để yêu cầu PostgreSQL tính toán phần trăm trong nhóm sale các giá trị. Chúng tôi cũng sử dụng mệnh đề ORDER BY để yêu cầu PostgreSQL sắp xếp bán giá trị trước khi tính giá trị trung bình.
Khi bạn sử dụng percentile_cont , PostgreSQL sẽ nội suy giá trị trung bình là giá trị trung bình của 2 giá trị giữa (210,215).
Phần thưởng Đọc:Cách nhập tệp CSV trong bảng PostgreSQL
Nếu bạn không muốn PostgreSQL nội suy nhưng chỉ trả về giá trị gần nhất, hãy sử dụng percentile_disc thay thế. Đây là một ví dụ
postgres=# SELECT PERCENTILE_DISC(0.5) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 210
Nếu bạn muốn tính giá trị trung bình trong PostgreSQL cho mỗi nhóm, hãy sử dụng mệnh đề GROUP BY như hình dưới đây. Giả sử doanh số bán hàng của bạn bảng cũng chứa sản phẩm cột có tên sản phẩm. Trong trường hợp đó, bạn có thể tính giá trị trung bình cho từng sản phẩm bằng cách sử dụng truy vấn sau.
postgres=# SELECT PRODUCT, PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales GROUP BY PRODUCT;
Phần thưởng đã đọc:Cách tính tăng trưởng hàng tháng trong PostgreSQL
Sau khi bạn tính toán giá trị trung bình trong PostgreSQL, bạn có thể sử dụng Công cụ báo cáo PostgreSQL để vẽ biểu đồ giá trị trung bình cùng với giá trị bán hàng trên biểu đồ đường để phân tích sự khác biệt. Vì vậy, chúng tôi sẽ kết hợp giá trị trung bình được tính toán với doanh số bán hàng ban đầu bảng như hình dưới đây
postgres=# select * from sales, (SELECT PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY sale) FROM sales) temp order by order_date; order_date | sale | percentile_cont ------------+------+----------------- 2020-04-01 | 210 | 212.5 2020-04-02 | 125 | 212.5 2020-04-03 | 150 | 212.5 2020-04-04 | 230 | 212.5 2020-04-05 | 200 | 212.5 2020-04-06 | 25 | 212.5 2020-04-07 | 215 | 212.5 2020-04-08 | 300 | 212.5 2020-04-09 | 250 | 212.5 2020-04-10 | 220 | 212.5
Đây là biểu đồ đường thể hiện doanh số hàng ngày cùng với giá trị trung bình, được vẽ 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.