欠損日のある月ごとの平均
Evanston の 311 リクエストについて、データの各月ごとに、1 日あたりに作成されたリクエストの平均数を求めてください。
今回は、リクエストがない日付も無視しないでください。
この演習はコースの一部です
SQLによる探索的データ分析
演習の手順
- 2016-01-01 から 2018-06-30 までの日付の系列を生成します。
- その系列を、1 日あたりに作成されたリクエスト数を数えるサブクエリに結合します。
- すべての日付を含む
dateから月を得るためにdate_trunc()を使います。dayではありません。 coalesce()を使って、NULL のcount値を 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;