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

Cách tính giá trị trung bình trong PostgreSQL

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.

  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ách thoát ký tự dấu chấm hỏi (?) Với Spring JpaRepository

  2. Làm thế nào để làm cho cơ sở dữ liệu postgresql của tôi sử dụng đối chiếu không phân biệt chữ hoa chữ thường?

  3. Oracle chuyển sang PostgreSQL:Lý do nên di chuyển

  4. Các bộ dữ liệu không được chèn tuần tự trong bảng cơ sở dữ liệu?

  5. Giám sát cơ sở dữ liệu PostgreSQL:Mẹo để giám sát những gì