Moyenne mensuelle avec dates manquantes
Trouvez le nombre moyen de demandes pour le 311 d’Evanston créées par jour pour chaque mois des données.
Cette fois-ci, n'ignorez pas les dates sans demande.
Cet exercice fait partie du cours
Analyse exploratoire des données en SQL
Instructions
- Générez une série de dates allant du 01/01/2016 au 30/06/2018.
- Associez la série à une sous-requête pour compter le nombre de demandes créées par jour.
- Utilisez
date_trunc()
pour obtenir des mois à partir dedate
, qui contient toutes les dates, et PASday
. - Utilisez
coalesce()
pour remplacer les valeurs NULL decount
par 0. Calculez la moyenne de cette valeur.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
-- 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;