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

Cách điền ngày bị thiếu trong PostgreSQL bằng cách sử dụng create_series

Thông thường, chúng ta cần điền các ngày bị thiếu trong PostgreSQL bằng cách điền các hàng còn thiếu cho các giá trị ngày đó. Dưới đây là cách điền ngày tháng còn thiếu trong PostgreSQL bằng cách sử dụng hàm create_series.

Cách điền ngày còn thiếu trong PostgreSQL bằng cách sử dụng create_series

Dưới đây là các bước để điền ngày còn thiếu trong PostgreSQL. Chúng tôi sẽ sử dụng create_series trong PostgreSQL để lấp đầy các giá trị còn thiếu.

Giả sử bạn có bảng sau doanh số bán hàng (ngày_đặt_hàng, chương trình giảm giá)

postgresql=# create table sales(order_date date,sale int);

postgresql=# insert into sales(order_date,sale) values('2020-04-01',212),
     ('2020-04-04',220),
     ('2020-04-05',120),
     ('2020-04-07',200),
     ('2020-04-08',222),
     ('2020-04-10',312),
     ('2020-04-11',225),
     ('2020-04-12',212);

postgresql=# select * from sales;
+------------+------+
| order_date | sale |
+------------+------+
| 2020-04-01 |  212 |
| 2020-04-04 |  220 |
| 2020-04-05 |  120 |
| 2020-04-07 |  200 |
| 2020-04-08 |  222 |
| 2020-04-10 |  312 |
| 2020-04-11 |  225 |
| 2020-04-12 |  212 |
+------------+------+

Phần thưởng đã đọc:Cách tính giá trị trung bình trong PostgreSQL

Như bạn có thể thấy trong bảng trên, có các giá trị ngày bị thiếu trong đó chẳng hạn như ngày 2 tháng 4, ngày 3 tháng 4, v.v.

Nếu chúng tôi cố gắng vẽ dữ liệu này trên biểu đồ, nó sẽ trông giống như

Biểu đồ như vậy có thể gây hiểu lầm vì nó không hiển thị khoảng trống cột cho những ngày bị thiếu.

Phần thưởng đã đọc:Cách tính toán trung bình động trong PostgreSQL

Để lấp đầy dữ liệu bị thiếu trong PostgreSQL, chúng ta cần tạo bảng chuỗi ngày 'trợ giúp' chứa tất cả các ngày giữa ngày tối thiểu và ngày tối đa trong bảng của chúng tôi, bao gồm cả các giá trị ngày bị thiếu dưới dạng hàng. Chúng tôi sẽ tham gia bảng trợ giúp này với doanh số bán hàng của chúng tôi bảng.

Chúng tôi sẽ sử dụng create_series trong PostgreSQL để tạo bảng chuỗi ngày. create_series hàm tự động tạo một chuỗi số và ngày tháng liên tục, nếu bạn cung cấp các giá trị tối thiểu và tối đa cho chuỗi của mình.

Dưới đây là một ví dụ, trong đó chúng tôi yêu cầu create_series tạo chuỗi ngày giữa ngày tối thiểu và ngày tối đa trong bảng của chúng tôi, bao gồm cả các giá trị ngày bị thiếu dưới dạng hàng.

postgres=# SELECT generate_series(min(order_date), max(order_date), '1d')::date AS order_date
           FROM   sales;

 order_date
------------
 2020-04-01
 2020-04-02
 2020-04-03
 2020-04-04
 2020-04-05
 2020-04-06
 2020-04-07
 2020-04-08
 2020-04-09
 2020-04-10
 2020-04-11
 2020-04-12

Phần thưởng đọc:Cách nhập tệp CSV trong PostgreSQL

Tiếp theo, chúng tôi thực hiện kết hợp TRÁI của bảng trợ giúp với doanh số bán hàng để điền các ngày còn thiếu trong PostgreSQL.

postgres=# SELECT x.order_date, t.sale
           FROM (
              SELECT generate_series(min(order_date), max(order_date), '1d')::date AS order_date
              FROM   sales
               ) x
           LEFT   JOIN sales t USING (order_date)
           ORDER  BY x.order_date;

 order_date | sale
------------+------
 2020-04-01 |  212
 2020-04-02 |
 2020-04-03 |
 2020-04-04 |  220
 2020-04-05 |  120
 2020-04-06 |
 2020-04-07 |  200
 2020-04-08 |  222
 2020-04-09 |
 2020-04-10 |  312
 2020-04-11 |  225
 2020-04-12 |  212

Sau khi điền các ngày còn thiếu 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à ví dụ về biểu đồ thanh hiển thị doanh số hàng ngày, được tạo bằng Ubiq.

Hãy xem sự khác biệt trong 2 biểu đồ!

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. Chuyển các tham số IN WHERE cho Dạng xem PostgreSQL?

  2. Khung thực thể PostgreSQL

  3. Chia tỷ lệ PostgreSQL sử dụng Bộ làm mát kết nối &Bộ cân bằng tải

  4. Cơ sở dữ liệu ngủ đông và nhiều người thuê sử dụng các lược đồ trong PostgreSQL

  5. Số lượng tham số cho phép tối đa cho mỗi loại nhà cung cấp cơ sở dữ liệu là bao nhiêu?