包含缺失日期的月均值
按月计算 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;