含缺漏日期的每月平均
找出資料中每個月份,每天建立的 Evanston 311 需求平均數。
這次不要忽略沒有需求的日期。
本練習屬於課程
SQL 中的探索式資料分析
練習說明
- 產生從 2016-01-01 到 2018-06-30 的日期序列。
- 將該序列與一個子查詢連接,計算每天建立的需求數量。
- 使用
date_trunc()從包含所有日期的date取得月份,而不是從day取得。 - 使用
coalesce()將count的 NULL 值替換為 0,並計算此值的平均數。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
-- 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;