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

Trung bình theo tháng với ngày bị thiếu

Tìm số lượng trung bình yêu cầu Evanston 311 được tạo mỗi ngày cho từng tháng trong dữ liệu.

Lần này, đừng bỏ qua những ngày không có yêu cầu.

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

  • Tạo một dãy ngày từ 2016-01-01 đến 2018-06-30.
  • JOIN dãy này với một truy vấn con để đếm số yêu cầu được tạo theo từng ngày.
  • Dùng date_trunc() để lấy các tháng từ date, vốn chứa đầy đủ các ngày, KHÔNG phải từ day.
  • Dùng coalesce() để thay thế các giá trị count là NULL bằng 0. Tính trung bình của giá trị này.

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.

-- generate series with all days from 2016-01-01 to 2018-06-30
WITH all_days AS 
     (SELECT generate_series(___,
                             ___,
                             ___::___) AS date),
     -- Subquery to compute daily counts
     daily_count AS 
     (SELECT date_trunc('day', date_created) AS day,
             count(*) AS count
        FROM evanston311
       GROUP BY day)
-- Aggregate daily counts by month using date_trunc
SELECT ___ AS month,
       -- Use coalesce to replace NULL count values with 0
       avg(coalesce(___, ___)) AS average
  FROM all_days
       LEFT JOIN daily_count
       -- Joining condition
       ON all_days.___=daily_count.___
 GROUP BY month
 ORDER BY month; 
Chỉnh sửa và Chạy Mã