FILTER を使ってピボットテーブルを作成する
前の演習では、4つの機関それぞれが発行した駐車違反(数値コード別)の件数を返すクエリを書きました。結果には欲しい情報がすべて含まれていましたが、結果内で各 violation_code が最大4回(選択されたそれぞれの issuing_agency ごとに)重複表示される形式でした。同じデータを、よりコンパクトに表現するには、ピボットテーブルを作成するとよいです。
この演習では、FILTER 句を用いたクエリを書いて、結果をピボットテーブル形式で出力します。この改善された表示は、関心のある4つの機関それぞれが発行した駐車違反のレポートで、より扱いやすくなります。
この演習はコースの一部です
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