Månadsgenomsnitt med saknade datum
Beräkna det genomsnittliga antalet Evanston 311-ärenden som skapades per dag för varje månad i datamängden.
Den här gången ska du inte ignorera datum utan ärenden.
Den här övningen är en del av kursen
Exploratory Data Analysis i SQL
Övningsinstruktioner
- Generera en serie datum från 2016-01-01 till 2018-06-30.
- Koppla serien till en underfråga som räknar antalet ärenden som skapades per dag.
- Använd
date_trunc()för att hämta månader fråndate, som innehåller alla datum – inte frånday. - Använd
coalesce()för att ersätta NULL-värden icountmed 0. Beräkna sedan genomsnittet av detta värde.
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
-- 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;