CommencezCommencez gratuitement

Utiliser FILTER pour créer un tableau croisé

Dans l'exercice précédent, vous avez écrit une requête qui donnait le nombre d'infractions de stationnement (par leur code numérique) émises par chacune de quatre agences. Les résultats contenaient toute l'information voulue, mais étaient présentés dans un format où chaque violation_code était affiché en double jusqu'à quatre fois (pour chaque issuing_agency sélectionnée). On peut obtenir une représentation plus compacte des mêmes données en créant un tableau croisé.

Dans cet exercice, vous allez écrire une requête utilisant la clause FILTER pour produire des résultats sous forme de tableau croisé. Cette présentation améliorée des données s'intègre plus facilement au rapport sur les contraventions de stationnement émises par chacune des quatre agences visées.

Cette activité fait partie du cours

Nettoyer des données dans des bases de données PostgreSQL

Voir le cours

Instructions de l’exercice

  • Définissez la colonne Police comme le nombre d'enregistrements pour chaque violation_code dont la valeur issuing_agency est P.
  • Définissez la colonne Sanitation comme le nombre d'enregistrements pour chaque violation_code dont la valeur issuing_agency est S.
  • Définissez la colonne Parks comme le nombre d'enregistrements pour chaque violation_code dont la valeur issuing_agency est K.
  • Définissez la colonne Transportation comme le nombre d'enregistrements pour chaque violation_code dont la valeur issuing_agency est V.

Exercice interactif pratique

Essayez cet exercice en complétant ce code d’exemple.

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
Modifier et exécuter le code