Создание сводной таблицы с помощью FILTER
В предыдущем упражнении вы написали запрос, который показывал количество нарушений правил парковки (по числовому коду) для каждого из четырёх ведомств. Результаты содержали всю необходимую информацию, однако были представлены в формате, при котором каждый violation_code мог повторяться до четырёх раз — по одному разу для каждого выбранного issuing_agency. Более компактное представление тех же данных можно получить с помощью сводной таблицы.
В этом упражнении вы напишете запрос с использованием условия FILTER, чтобы представить результаты в формате сводной таблицы. Такое улучшенное представление данных удобнее использовать в отчёте о нарушениях парковки, зафиксированных каждым из четырёх интересующих нас ведомств.
Это упражнение является частью курса
Очистка данных в базах данных 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