查找缺失日期
generate_series() 函数可用于识别缺失的日期。
回顾:
generate_series(from, to, interval)
其中 from 和 to 是 date 或 timestamp,interval 可以用包含数值与时间单位的字符串表示,例如 '1 month'。
Evanston 311 数据中是否存在某些天没有创建任何请求?
本练习是课程的一部分
SQL 中的探索性数据分析
练习说明
- 使用
generate_series()编写子查询,获取evanston311表中date_created的min()到max()之间的所有日期。 - 再写一个子查询,从
evanston311中选择所有date_created的值并转换为 date。 - 两个子查询都应产生
date类型的值(留意::)。 - 从第一个子查询中选择在第二个子查询结果中
NOT IN的日期(day)。这将得到未出现在date_created中的日期。
交互式实操练习
通过完成这段示例代码来试试这个练习。
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);