การใช้ FILTER เพื่อสร้าง pivot table
ในแบบฝึกหัดก่อนหน้า คุณเขียนคิวรีที่แสดงข้อมูลจำนวนการละเมิดกฎจอดรถ (ตามรหัสตัวเลข) ที่ออกโดยหน่วยงานทั้งสี่แห่ง ผลลัพธ์มีข้อมูลครบถ้วน แต่การนำเสนออาจซ้ำซ้อน เนื่องจาก violation_code แต่ละรหัสอาจปรากฏซ้ำได้ถึงสี่ครั้ง (ตามจำนวน issuing_agency ที่เลือก) การแสดงข้อมูลชุดเดียวกันในรูปแบบที่กระชับกว่านั้นทำได้ด้วยการสร้าง pivot table
ในแบบฝึกหัดนี้ จะได้เขียนคิวรีโดยใช้ clause FILTER เพื่อให้ผลลัพธ์อยู่ในรูปแบบ pivot table การนำเสนอข้อมูลในรูปแบบนี้ช่วยให้รายงานการละเมิดกฎจอดรถของหน่วยงานทั้งสี่แห่งอ่านและใช้งานได้ง่ายขึ้น
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การทำความสะอาดข้อมูลในฐานข้อมูล PostgreSQL
คำแนะนำการฝึกหัด
- กำหนดคอลัมน์
Policeเป็นจำนวนระเบียนของแต่ละviolation_codeที่มีค่าissuing_agencyเป็นP - กำหนดคอลัมน์
Sanitationเป็นจำนวนระเบียนของแต่ละviolation_codeที่มีค่าissuing_agencyเป็นS - กำหนดคอลัมน์
Parksเป็นจำนวนระเบียนของแต่ละviolation_codeที่มีค่าissuing_agencyเป็นK - กำหนดคอลัมน์
Transportationเป็นจำนวนระเบียนของแต่ละviolation_codeที่มีค่าissuing_agencyเป็นV
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
SELECT
violation_code,
-- Define the "Police" column
COUNT(issuing_agency) FILTER (WHERE issuing_agency = '___') AS "Police",
-- Define the "Sanitation" column
COUNT(___) FILTER (WHERE ___ = '___') AS "___",
-- Define the "Parks" column
___(___) ___ (WHERE ___ = '___') AS "___",
-- Define the "Transportation" column
___(___) ___ (___ ___ = '___') AS "___"
FROM
parking_violation
GROUP BY
violation_code
ORDER BY
violation_code