Maandelijks gemiddelde met ontbrekende datums
Zoek het gemiddelde aantal aangemaakte Evanston 311-verzoeken per dag voor elke maand in de gegevens.
Negeer dit keer geen datums zonder verzoeken.
Deze oefening maakt deel uit van de cursus
Exploratory Data Analysis in SQL
Oefeninstructies
- Genereer een reeks datums van 2016-01-01 tot 2018-06-30.
- Join de reeks met een subquery om het aantal per dag aangemaakte verzoeken te tellen.
- Gebruik
date_trunc()om maanden te krijgen op basis vandate, dat alle datums bevat, NIETday. - Gebruik
coalesce()om NULL-waarden incountte vervangen door 0. Bereken het gemiddelde van deze waarde.
Praktische interactieve oefening
Probeer deze oefening eens door deze voorbeeldcode in te vullen.
-- 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;