Accéder au contenu principal
Documents
Gestion des tableaux et des schémasSyntaxe de baseDéclencheursBases de donnéesFonctions de la dateFonctions des chaînes de caractèresFonctions mathématiquesFonctions JSONIndexes

PostgreSQL GROUP BY

La clause GROUP BY de PostgreSQL est utilisée pour classer les données identiques dans des groupes. Elle est souvent utilisée avec des fonctions d'agrégation telles que COUNT, SUM, AVG, MAX ou MIN pour effectuer des opérations sur chaque groupe de données.

Utilisation

La clause GROUP BY est utilisée lorsque vous devez organiser les lignes qui ont les mêmes valeurs dans les colonnes spécifiées en lignes récapitulatives. Il suit l'instruction SELECT et toute fonction d'agrégation pour déterminer comment les données doivent être regroupées.

SELECT column1, aggregate_function(column2)
FROM table_name
GROUP BY column1;

Dans cette syntaxe, GROUP BY column1 regroupe l'ensemble des résultats par les valeurs de column1.

Exemples

1. Groupement de base

SELECT department, COUNT(*)
FROM employees
GROUP BY department;

Cet exemple compte le nombre d'employés dans chaque département en regroupant les résultats sur la base de la colonne department.

2. Regroupement avec SUM

SELECT department, SUM(salary)
FROM employees
GROUP BY department;

Cette requête calcule le salaire total payé par département, en regroupant les lignes par department et en additionnant la colonne salary.

3. Regroupement avec plusieurs colonnes

SELECT department, job_title, AVG(salary)
FROM employees
GROUP BY department, job_title;

Ici, la requête regroupe les données par department et job_title, en calculant le salaire moyen pour chaque combinaison unique de département et d'intitulé de poste.

4. Regroupement avec HAVING

SELECT department, COUNT(*)
FROM employees
GROUP BY department
HAVING COUNT(*) > 10;

Cet exemple filtre les données groupées pour n'inclure que les départements comptant plus de 10 employés à l'aide de la clause HAVING.

Conseils et bonnes pratiques

  • Ne sélectionnez que les colonnes nécessaires. N'utilisez que les colonnes que vous souhaitez grouper ou agréger pour garantir une exécution efficace de la requête.
  • Classez vos résultats. Combinez GROUP BY avec ORDER BY pour trier vos résultats agrégés et faciliter l'analyse. Notez que ORDER BY est traité après GROUP BY, ce qui peut affecter les performances et les résultats.
  • Utilisez HAVING pour filtrer les groupes. Utilisez la clause HAVING pour filtrer les groupes après l'étape d'agrégation, contrairement à WHERE qui filtre les lignes avant l'agrégation.
  • Veillez à ce que le regroupement soit correct. Pour éviter les erreurs, incluez toujours toutes les colonnes non agrégées de l'instruction SELECT dans la clause GROUP BY.
  • Tenez compte des performances avec les grands ensembles de données. Sachez que l'utilisation de GROUP BY avec de grands ensembles de données peut avoir un impact sur les performances. Envisagez d'indexer les colonnes utilisées dans GROUP BY pour optimiser l'exécution des requêtes.