始める無料で始める

欠損している日付を見つける

generate_series() 関数は、欠損している日付を見つけるのに便利です。

おさらい:

generate_series(from, to, interval)

ここで fromto は日付またはタイムスタンプで、interval'1 month' のように数値と時間単位を組み合わせた文字列で指定できます。

Evanston 311 のデータで、リクエストが1件も作成されなかった日はありますか?

この演習はコースの一部です

SQLによる探索的データ分析

コースを見る

演習の手順

  1. generate_series() を使って、evanston311date_createdmin() から max() までのすべての日付を取得するサブクエリを書いてください。
  2. evanston311 から date_created を日付としてすべて選択する別のサブクエリを書いてください。
  3. どちらのサブクエリも date 型の値を返すようにします(:: を使う箇所に注意)。
  4. 1つ目のサブクエリのうち、2つ目のサブクエリの結果に 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);
コードを編集して実行