開始使用免費開始

找出缺少的日期

generate_series() 函式對於找出缺少的日期很有幫助。

回顧:

generate_series(from, to, interval)

其中 fromto 可以是日期或時間戳,而 interval 可以用「數字 + 時間單位」的字串來指定,例如 '1 month'

在 Evanston 311 的資料裡,有沒有任何一天完全沒有建立請求?

本練習屬於課程

SQL 中的探索式資料分析

檢視課程

練習說明

  1. 撰寫一個使用 generate_series() 的子查詢,取得 evanston311date_createdmin()max() 之間的所有日期。
  2. 再撰寫一個子查詢,從 evanston311 選取所有 date_created,並轉為日期。
  3. 兩個子查詢都應該產生 date 型別的值(留意使用 ::)。
  4. 從第一個子查詢選取那些在第二個子查詢結果中 NOT IN 的日期(day)。這會得到不在 date_created 中的那些天。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

SELECT day
-- 1) Subquery to generate all dates
-- from min to max date_created
  FROM (SELECT generate_series(___(___),
                               ___(___),
                               ___)::___ AS day
          -- What table is date_created in?
          FROM ___) AS all_dates
-- 4) Select dates (day from above) that are NOT IN the subquery
 WHERE day ___ 
       -- 2) Subquery to select all date_created values as dates
       (SELECT ___::___
          FROM evanston311);
編輯並執行程式碼