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

Cách tính toán phần trăm trong PostgreSQL

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.

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cài đặt PostgreSQL trên Ubuntu cho Ruby on Rails

  2. Postgresql GROUP_CONCAT tương đương?

  3. Postgresql SAO CHÉP VÀO STDIN Với CSV thực hiện trên conflic làm cập nhật như thế nào?

  4. Rails:Quyền Postgres bị từ chối tạo cơ sở dữ liệu trên rake db:create:all

  5. Cách ánh xạ trường mảng PostgreSQL trong Django ORM