Folosirea clauzei FILTER pentru a crea un tabel pivot
În exercițiul anterior, ai scris o interogare care oferea informații despre numărul de amenzi de parcare (identificate prin codul numeric) emise de fiecare dintre cele patru agenții. Rezultatele conțineau toate informațiile dorite, însă erau prezentate într-un format în care fiecare violation_code apărea de până la patru ori (câte o dată pentru fiecare issuing_agency selectată). O reprezentare mai compactă a acelorași date poate fi obținută prin crearea unui tabel pivot.
În acest exercițiu, vei scrie o interogare care folosește clauza FILTER pentru a produce rezultate în format de tabel pivot. Această prezentare îmbunătățită a datelor poate fi utilizată mai ușor în raportul privind amenzile de parcare emise de fiecare dintre cele patru agenții de interes.
Acest exercițiu face parte din cursul
Curățarea datelor în baze de date PostgreSQL
Instrucțiuni pentru exercițiu
- Definește coloana
Policeca numărul de înregistrări pentru fiecareviolation_codecu valoareaPpentruissuing_agency. - Definește coloana
Sanitationca numărul de înregistrări pentru fiecareviolation_codecu valoareaSpentruissuing_agency. - Definește coloana
Parksca numărul de înregistrări pentru fiecareviolation_codecu valoareaKpentruissuing_agency. - Definește coloana
Transportationca numărul de înregistrări pentru fiecareviolation_codecu valoareaVpentruissuing_agency.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
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