PostgreSQL : Comptage par colonnes multiples

De knowledge
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(*).