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.