Dùng FILTER để tạo bảng pivot
Ở bài tập trước, bạn đã viết một truy vấn cung cấp số lượng vé phạt đỗ xe (theo mã số của chúng) do từng cơ quan trong bốn cơ quan phát hành. Kết quả chứa đầy đủ thông tin cần thiết nhưng được trình bày theo định dạng lặp lại mỗi violation_code tối đa bốn lần (ứng với mỗi issuing_agency được chọn). Một cách biểu diễn gọn hơn cho cùng dữ liệu là tạo một bảng pivot.
Trong bài này, bạn sẽ viết truy vấn dùng mệnh đề FILTER để tạo kết quả theo định dạng bảng pivot. Cách trình bày cải tiến này giúp bạn dễ đưa dữ liệu vào báo cáo về vé phạt đỗ xe do bốn cơ quan quan tâm phát hành.
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
- Định nghĩa cột
Policelà số bản ghi cho mỗiviolation_codecóissuing_agencybằngP. - Định nghĩa cột
Sanitationlà số bản ghi cho mỗiviolation_codecóissuing_agencybằngS. - Định nghĩa cột
Parkslà số bản ghi cho mỗiviolation_codecóissuing_agencybằngK. - Định nghĩa cột
Transportationlà số bản ghi cho mỗiviolation_codecóissuing_agencybằngV.
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
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