使用 FILTER 创建数据透视表
在上一个练习中,您编写了一个查询,用于统计四个机构分别开具的停车违规(按其数字代码)的数量。结果包含了所需信息,但呈现格式会在结果中重复显示每个 violation_code,最多可达 4 次(对应每个被选中的 issuing_agency)。通过创建数据透视表,可以更紧凑地表示同样的数据。
在本练习中,您将使用 FILTER 子句编写查询,以数据透视表的形式生成结果。这样的展示更便于在报告中呈现这四个相关机构分别开具的停车违规情况。
本练习是课程的一部分
在 PostgreSQL 数据库中清理数据
练习说明
- 将
Police列定义为在issuing_agency等于P时,每个violation_code的记录数。 - 将
Sanitation列定义为在issuing_agency等于S时,每个violation_code的记录数。 - 将
Parks列定义为在issuing_agency等于K时,每个violation_code的记录数。 - 将
Transportation列定义为在issuing_agency等于V时,每个violation_code的记录数。
交互式实操练习
通过完成这段示例代码来试试这个练习。
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