Tìm ngày bị thiếu
Hàm generate_series() rất hữu ích để phát hiện các ngày bị thiếu.
Ôn lại:
generate_series(from, to, interval)
trong đó from và to là date hoặc timestamp, còn interval có thể truyền dưới dạng chuỗi gồm một số và đơn vị thời gian, ví dụ '1 month'.
Có ngày nào trong dữ liệu Evanston 311 mà không có yêu cầu nào được tạo không?
Bài tập này là một phần của khóa học
Phân tích Khám phá Dữ liệu bằng SQL
Hướng dẫn bài tập
- Viết một truy vấn con dùng
generate_series()để lấy tất cả các ngày giữamin()vàmax()củadate_createdtrongevanston311. - Viết một truy vấn con khác để chọn tất cả giá trị
date_createddưới dạng date từevanston311. - Cả hai truy vấn con phải tạo ra các giá trị kiểu
date(hãy tìm::). - Chọn các ngày (
day) từ truy vấn con thứ nhất màNOT INkết quả của truy vấn con thứ hai. Điều này cho bạn các ngày không xuất hiện trongdate_created.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
SELECT day
-- 1) Subquery to generate all dates
-- from min to max date_created
FROM (SELECT generate_series(___(___),
___(___),
___)::___ AS day
-- What table is date_created in?
FROM ___) AS all_dates
-- 4) Select dates (day from above) that are NOT IN the subquery
WHERE day ___
-- 2) Subquery to select all date_created values as dates
(SELECT ___::___
FROM evanston311);