Місячне середнє з пропущеними датами
Знайдіть середню кількість звернень до Evanston 311, створених за день, для кожного місяця в даних.
Цього разу не ігноруйте дати без звернень.
Ця вправа є частиною курсу
Розвідувальний аналіз даних у SQL
Інструкції до вправи
- Згенеруйте послідовність дат від 2016-01-01 до 2018-06-30.
- Зʼєднайте цю послідовність із підзапитом, щоб підрахувати кількість звернень, створених за день.
- Використайте
date_trunc(), щоб отримати місяці зdate, яка містить усі дати, а НЕ зday. - Використайте
coalesce(), щоб замінити значенняcountNULL на 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;