Accéder au contenu principal
Documents
FonctionsExpressionsKeywordsDéclarationsClauses

Clause GROUP BY de MySQL

La clause `GROUP BY` de MySQL est utilisée pour classer des données identiques dans des groupes. Elle est généralement utilisée avec les fonctions d'agrégation (comme `COUNT`, `SUM`, `AVG`) pour effectuer des calculs sur chaque groupe de données.

Utilisation

La clause `GROUP BY` est utilisée lorsque vous avez besoin d'agréger des données et de regrouper les lignes qui ont les mêmes valeurs dans les colonnes spécifiées. Elle suit les clauses `FROM` et `WHERE` d'une requête SQL.


SELECT column1, aggregate_function(column2)
FROM table_name
[WHERE condition]
GROUP BY column1;

Dans cette syntaxe, `GROUP BY column1` organise l'ensemble des résultats en groupes basés sur 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 données par la colonne `département`.

2. Regroupement avec plusieurs colonnes


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

Ici, le salaire moyen est calculé pour chaque titre de poste au sein de chaque département, en regroupant les données à la fois par `département` et `titre_de_poste`.

3. Utilisation de GROUP BY avec HAVING


SELECT department, SUM(sales)
FROM sales_data
GROUP BY department
HAVING SUM(sales) > 10000;

Cet exemple regroupe les données par `département`, puis filtre les groupes à l'aide de `HAVING`, en n'affichant que les départements dont les ventes totales sont supérieures à 10 000.

Conseils et bonnes pratiques

  • Veillez à la cohérence des colonnes. N'incluez que des colonnes non agrégées dans la clause `GROUP BY` pour éviter les erreurs. Si des colonnes non agrégées sont incluses dans la clause `SELECT` sans être spécifiées dans la clause `GROUP BY`, cela peut conduire à des résultats inattendus ou à des erreurs.
  • Utilisez des fonctions agrégées. Associez `GROUP BY` à des fonctions d'agrégation pour résumer efficacement les données.
  • Classez les groupes de manière logique. Utilisez `ORDER BY` après `GROUP BY` pour trier les résultats afin d'améliorer la lisibilité.
  • Filtrez les groupes avec HAVING. Utilisez `HAVING` au lieu de `WHERE` pour filtrer les résultats basés sur des calculs agrégés. Rappelez-vous que `WHERE` filtre les lignes avant le regroupement, tandis que `HAVING` filtre les groupes après l'agrégation.
  • Tenez compte des performances. Lorsque vous utilisez `GROUP BY` sur de grands ensembles de données, soyez conscient de l'impact potentiel sur le temps d'exécution de la requête. Envisagez des stratégies d'optimisation, telles que l'indexation, pour améliorer les performances.

Amélioration de SQL pour les débutants

Acquérir les compétences SQL pour interagir avec vos données et les interroger.
Commencez à apprendre gratuitement