欠損している日付を見つける
generate_series() 関数は、欠損している日付を見つけるのに便利です。
おさらい:
generate_series(from, to, interval)
ここで from と to は日付またはタイムスタンプで、interval は '1 month' のように数値と時間単位を組み合わせた文字列で指定できます。
Evanston 311 のデータで、リクエストが1件も作成されなかった日はありますか?
この演習はコースの一部です
SQLによる探索的データ分析
演習の手順
generate_series()を使って、evanston311のdate_createdのmin()からmax()までのすべての日付を取得するサブクエリを書いてください。evanston311からdate_createdを日付としてすべて選択する別のサブクエリを書いてください。- どちらのサブクエリも
date型の値を返すようにします(::を使う箇所に注意)。 - 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);