Bắt đầu ngayBắt đầu miễn phí

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 đó fromto 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

Xem khóa học

Hướng dẫn bài tập

  1. Viết một truy vấn con dùng generate_series() để lấy tất cả các ngày giữa min()max() của date_created trong evanston311.
  2. Viết một truy vấn con khác để chọn tất cả giá trị date_created dưới dạng date từ evanston311.
  3. Cả hai truy vấn con phải tạo ra các giá trị kiểu date (hãy tìm ::).
  4. Chọn các ngày (day) từ truy vấn con thứ nhất mà NOT IN kế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 trong date_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);
Chỉnh sửa và Chạy Mã