Tính toán phần trăm giúp bạn xếp hạng dữ liệu để phân tích cũng như tính giá trị trung bình cho một bộ giá trị. Dưới đây là cách tính toán phần trăm trong PostgreSQL bằng cách sử dụng percentile_cont chức năng cửa sổ. Chúng ta cũng sẽ xem xét cách tính toán phân vị thứ 50, phân vị thứ 90, phân vị thứ 95 và phân vị thứ n trong PostgreSQL, vì chúng thường được sử dụng trong phân tích dữ liệu.
Cách tính toán phần trăm trong PostgreSQL
Chúng tôi sẽ tính toán phần trăm trong PostgreSQL bằng cách sử dụng percentile_cont chức năng cửa sổ
Giả sử bạn có bảng sau doanh số (ngày_đặt_hàng, số tiền) và bạn muốn tính toán phần trăm thứ 50.
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 điền ngày còn thiếu trong PostgreSQL
Đây là truy vấn để tính toán phần trăm thứ 50 trong PostgreSQL. Bạn có thể sử dụng cùng một truy vấn để tính giá trị trung bình 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 chức năng cửa sổ 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 để 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 để sắp xếp bán hàng giá trị trước khi chúng tôi tính toán phần trăm trong PostgreSQL.
Khi bạn sử dụng percentile_cont hàm window, PostgreSQL sẽ nội suy giá trị trung vị là giá trị trung bình của 2 giá trị giữa (210, 215), trong trường hợp có 2 giá trị giữa. Đó là lý do tại sao nó trả về 212,5
Phần thưởng đã đọc:Cách tính toán trung bình động trong PostgreSQL
Khi bạn có thể tính toán phần trăm trong PostgreSQL, nếu bạn không muốn PostgreSQL nội suy mà chỉ trả về giá trị gần nhất, hãy sử dụng percentile_disc chức năng cửa sổ thay thế. Đây là một ví dụ
postgres=# SELECT PERCENTILE_DISC(0.5) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 210
Trong trường hợp này, nó sẽ trả về một trong các giá trị giữa, trong trường hợp có 2 giá trị giữa.
Phần thưởng đọc:Cách nhập tệp CSV vào PostgreSQL
Cách tính phần trăm thứ 90 trong PostgreSQL
Tương tự, bạn có thể tính toán phân vị thứ 90 trong PostgreSQL bằng cách sử dụng percentile_cont. Chúng tôi thay đổi 0,5 thành 0,9 trong percentile_cont chức năng
postgres=# SELECT PERCENTILE_CONT(0.9) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_cont ----------------- 255
Bạn cũng có thể tính toán phần trăm thứ 90 trong PostgreSQL bằng cách sử dụng percentile_disc
postgres=# SELECT PERCENTILE_DISC(0.9) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 250
Cách tính phần trăm thứ 95 trong PostgreSQL
Tương tự, bạn có thể tính toán phân vị thứ 95 trong PostgreSQL, sử dụng percentile_cont
postgres=# SELECT PERCENTILE_CONT(0.95) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_cont ----------------- 277.5
Bạn cũng có thể tính toán phân vị thứ 95 trong PostgreSQL bằng cách sử dụng percentile_disc
postgres=# SELECT PERCENTILE_DISC(0.95) WITHIN GROUP(ORDER BY sale) FROM sales; percentile_disc ----------------- 300
Cách tính phần trăm thứ n trong PostgreSQL
Tương tự, bạn có thể tính toán phân vị thứ n trong PostgreSQL bằng cách sử dụng percentile_cont. Về cơ bản, chúng tôi cung cấp n / 100 trong percentile_cont chức năng
postgres=# SELECT PERCENTILE_CONT(n/100) WITHIN GROUP(ORDER BY sale) FROM sales;
Bạn cũng có thể tính toán phần trăm thứ 90 trong PostgreSQL bằng cách sử dụng percentile_disc
postgres=# SELECT PERCENTILE_DISC(n/100) WITHIN GROUP(ORDER BY sale) FROM sales;
Sau khi bạn tính toán phần trăm trong PostgreSQL, bạn có thể sử dụng Công cụ báo cáo PostgreSQL để vẽ biểu đồ giá trị phần trăm 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à cũng như thiết lập mục tiêu. Vì vậy, chúng tôi sẽ kết hợp giá trị phần trăm thứ 50 đượ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 phần trăm, đượ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.