PostgreSQL : Comptage par colonnes multiples
Aller à la navigation
Aller à la recherche
Objectif
Compter le nombre d'occurrences de chaque combinaison distincte de plusieurs colonnes dans une table PostgreSQL.
Syntaxe de base
SELECT col1, col2, col3, COUNT(*) AS nb_lignes
FROM ma_table
GROUP BY col1, col2, col3;
Explication
- GROUP BY regroupe les lignes par combinaison unique des colonnes spécifiées.
- COUNT(*) compte le nombre de lignes dans chaque groupe.
Filtrer les groupes
Utiliser HAVING pour ne garder que les groupes avec un certain nombre d'occurrences :
SELECT col1, col2, col3, COUNT(*) AS nb_lignes
FROM ma_table
GROUP BY col1, col2, col3
HAVING COUNT(*) > 1;
Trier les résultats
Utiliser ORDER BY pour trier les groupes selon le nombre d'occurrences :
- Ordre croissant :
ORDER BY nb_lignes ASC;
- Ordre décroissant :
ORDER BY nb_lignes DESC;
Exemple complet
SELECT col1, col2, col3, COUNT(*) AS nb_lignes
FROM ma_table
GROUP BY col1, col2, col3
HAVING COUNT(*) > 1
ORDER BY nb_lignes DESC;
Notes
- DISTINCT ne permet pas de compter les occurrences, il faut utiliser GROUP BY.
- HAVING s'utilise après GROUP BY pour filtrer les groupes.
- ORDER BY peut trier selon n'importe quelle colonne, y compris les agrégats comme COUNT(*).