開始使用免費開始

含缺漏日期的每月平均

找出資料中每個月份,每天建立的 Evanston 311 需求平均數。

這次不要忽略沒有需求的日期。

本練習屬於課程

SQL 中的探索式資料分析

檢視課程

練習說明

  • 產生從 2016-01-01 到 2018-06-30 的日期序列。
  • 將該序列與一個子查詢連接,計算每天建立的需求數量。
  • 使用 date_trunc() 從包含所有日期的 date 取得月份,而不是從 day 取得。
  • 使用 coalesce()count 的 NULL 值替換為 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; 
編輯並執行程式碼