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
GROUPBY column1;Propulsé par
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
GROUPBY department;Propulsé par
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
GROUPBY department;Propulsé par
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
GROUPBY department, job_title;Propulsé par
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
GROUPBY department
HAVINGCOUNT(*)>10;Propulsé par
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.
La clause
GROUP BYde 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 queCOUNT,SUM,AVG,MAXouMINpour effectuer des opérations sur chaque groupe de données.Utilisation
La clause
GROUP BYest 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'instructionSELECTet toute fonction d'agrégation pour déterminer comment les données doivent être regroupées.Dans cette syntaxe,
GROUP BY column1regroupe l'ensemble des résultats par les valeurs decolumn1.Exemples
1. Groupement de base
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
Cette requête calcule le salaire total payé par département, en regroupant les lignes par
departmentet en additionnant la colonnesalary.3. Regroupement avec plusieurs colonnes
Ici, la requête regroupe les données par
departmentetjob_title, en calculant le salaire moyen pour chaque combinaison unique de département et d'intitulé de poste.4. Regroupement avec HAVING
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
GROUP BYavecORDER BYpour trier vos résultats agrégés et faciliter l'analyse. Notez queORDER BYest traité aprèsGROUP BY, ce qui peut affecter les performances et les résultats.HAVINGpour filtrer les groupes après l'étape d'agrégation, contrairement àWHEREqui filtre les lignes avant l'agrégation.SELECTdans la clauseGROUP BY.GROUP BYavec de grands ensembles de données peut avoir un impact sur les performances. Envisagez d'indexer les colonnes utilisées dansGROUP BYpour optimiser l'exécution des requêtes.