Phân loại vi phạm đỗ xe theo thời điểm trong ngày
Có ý kiến cho rằng việc lập biên bản vi phạm đỗ xe không diễn ra đồng đều trong suốt cả ngày. Bạn được giao nhiệm vụ gắn mỗi vi phạm đỗ xe với thời điểm trong ngày khi biên bản được lập. Bạn xác định cách đơn giản nhất là tạo một cột mới tên morning. Trường này sẽ nhận (số nguyên) 1 nếu vi phạm được lập vào buổi sáng (từ 12:00 AM đến 11:59 AM), và (số nguyên) 0 nếu không. Thời điểm lập biên bản được ghi trong cột violation_time của bảng parking_violation. Cột này gồm 4 chữ số theo sau là A (cho AM) hoặc P (cho PM).
Trong bài tập này, bạn sẽ điền dữ liệu cho cột morning bằng cách khớp các mẫu cho những violation_time xảy ra vào buổi sáng.
Bài tập này là một phần của khóa học
Làm sạch dữ liệu trong cơ sở dữ liệu PostgreSQL
Hướng dẫn bài tập
- Dùng biểu thức chính quy
'\d\d\d\dA'trong truy vấn con để khớp các giá trịviolation_timegồm 4 chữ số liên tiếp (\d) theo sau là chữAin hoa. - Chỉnh mệnh đề
CASEđể điền cộtmorningbằng1(số nguyên, không có ngoặc kép) khi biểu thức chính quy khớp. - Chỉnh mệnh đề
CASEđể điền cộtmorningbằng0(số nguyên, không có ngoặc kép) khi biểu thức chính quy không khớp.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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;