時間帯別に駐車違反を分類する
一日の中で駐車違反の発行が均等ではないのでは、という指摘が出ています。そこで、違反が発行された時間帯を駐車違反にひも付けることになりました。最も簡単な方法として、morning という新しい列を作成すると決めました。違反が午前中(12:00 AM〜11:59 AM)に発行された場合は(整数の)1、それ以外は(整数の)0 を格納します。発行時刻は parking_violation テーブルの violation_time 列に記録されています。この列は4桁の数字に続いて A(AM)または P(PM)が付く形式です。
この演習では、午前中に発生した violation_time のパターンに一致させて、morning 列を埋めていきます。
この演習はコースの一部です
PostgreSQLデータベースで学ぶデータクレンジング
演習の手順
- サブクエリで正規表現パターン
'\d\d\d\dA'を使い、4つの連続した数字(\d)の後に大文字のAが続くviolation_timeの値にマッチさせます。 - 正規表現に一致した場合、
CASE句を編集してmorning列に1(クォートなしの整数)を格納します。 - 正規表現に一致しなかった場合、
CASE句を編集してmorning列に0(クォートなしの整数)を格納します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
SELECT
summons_number,
CASE WHEN
summons_number IN (
SELECT
summons_number
FROM
parking_violation
WHERE
-- Match violation_time for morning values
___ SIMILAR TO ___
)
-- Value when pattern matched
THEN ___
-- Value when pattern not matched
ELSE ___
END AS morning
FROM
parking_violation;