Tworzenie tabeli przestawnej za pomocą FILTER
W poprzednim ćwiczeniu napisano zapytanie zwracające informacje o liczbie naruszeń przepisów parkingowych (według ich kodów numerycznych) wystawionych przez każdą z czterech agencji. Wyniki zawierały wszystkie potrzebne dane, jednak były przedstawione w formacie, w którym każdy violation_code mógł pojawiać się nawet czterokrotnie – po jednym razie dla każdej z wybranych wartości issuing_agency. Bardziej zwartą reprezentację tych samych danych można uzyskać, tworząc tabelę przestawną.
W tym ćwiczeniu napiszesz zapytanie wykorzystujące klauzulę FILTER, aby uzyskać wyniki w formacie tabeli przestawnej. Takie przejrzyste przedstawienie danych ułatwi przygotowanie raportu dotyczącego naruszeń przepisów parkingowych wystawionych przez każdą z czterech interesujących nas agencji.
To ćwiczenie jest częścią kursu
Czyszczenie danych w bazach PostgreSQL
Instrukcje do ćwiczenia
- Zdefiniuj kolumnę
Policejako liczbę rekordów dla każdegoviolation_codez wartościąissuing_agencyrównąP. - Zdefiniuj kolumnę
Sanitationjako liczbę rekordów dla każdegoviolation_codez wartościąissuing_agencyrównąS. - Zdefiniuj kolumnę
Parksjako liczbę rekordów dla każdegoviolation_codez wartościąissuing_agencyrównąK. - Zdefiniuj kolumnę
Transportationjako liczbę rekordów dla każdegoviolation_codez wartościąissuing_agencyrównąV.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
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