การจำแนกใบสั่งจอดรถตามช่วงเวลาของวัน
มีข้อกังวลว่าการออกใบสั่งจอดรถอาจไม่สม่ำเสมอตลอดทั้งวัน คุณได้รับมอบหมายให้ระบุว่าใบสั่งแต่ละใบออกในช่วงเวลาใดของวัน วิธีที่ง่ายที่สุดคือสร้างคอลัมน์ใหม่ชื่อ morning โดยคอลัมน์นี้จะมีค่า (จำนวนเต็ม) 1 หากใบสั่งออกในช่วงเช้า (ตั้งแต่ 12:00 AM ถึง 11:59 AM) และมีค่า (จำนวนเต็ม) 0 ในกรณีอื่น เวลาที่ออกใบสั่งบันทึกไว้ในคอลัมน์ violation_time ของตาราง parking_violation ซึ่งประกอบด้วยตัวเลข 4 หลักตามด้วย A (สำหรับ AM) หรือ P (สำหรับ PM)
ในแบบฝึกหัดนี้ คุณจะกำหนดค่าให้คอลัมน์ morning โดยใช้การจับคู่ pattern สำหรับ violation_time ที่เกิดขึ้นในช่วงเช้า
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การทำความสะอาดข้อมูลในฐานข้อมูล PostgreSQL
คำแนะนำการฝึกหัด
- ใช้ pattern นิพจน์ปกติ
'\d\d\d\dA'ใน sub-query เพื่อจับคู่ค่าviolation_timeที่ประกอบด้วยตัวเลข 4 หลักติดกัน (\d) ตามด้วยตัวอักษรAพิมพ์ใหญ่ - แก้ไขส่วน
CASEเพื่อกำหนดค่า1(จำนวนเต็ม ไม่ใส่เครื่องหมายคำพูด) ให้คอลัมน์morningเมื่อ pattern ตรงกัน - แก้ไขส่วน
CASEเพื่อกำหนดค่า0(จำนวนเต็ม ไม่ใส่เครื่องหมายคำพูด) ให้คอลัมน์morningเมื่อ pattern ไม่ตรงกัน
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
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;