依一天中的時段分類停車違規
有人提出疑慮,認為停車違規的開單時間在一天當中分布不均。你的任務是將每筆停車違規對應到實際的開單時段。你決定用最簡單的方法:新增一個名為 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;