Leçon 25 : Regroupement de Données avec GROUP BY et HAVING
Les fonctions d'agrégation résument généralement la table entière. La clause GROUP BY divise les lignes en groupes, vous permettant d'appliquer la fonction d'agrégation à * chaque groupe * individuellement.
Utilisation de GROUP BY
Pour voir des sous-totaux ou des données de résumé pour des catégories spécifiques, vous devez utiliser GROUP BY.
- Règle : Toute colonne répertoriée dans l'instruction
SELECTqui n'est pas une fonction d'agrégation doit être répertoriée dans la clauseGROUP BY.
Exemple : Salaire Moyen par Département
sql SELECT Department, AVG(Salary) AS AverageSalary FROM Employees GROUP BY Department; -- Regroupe les résultats par nom de Département
Filtrage des Groupes avec HAVING
- La clause
WHEREfiltre les lignes individuelles avant le regroupement. - La clause
HAVINGfiltre les groupes après que le regroupement et l'agrégation ont eu lieu.
Exemple : Trouver les Départements avec plus de 5 employés
sql SELECT Department, COUNT(EmployeeID) AS EmployeeCount FROM Employees GROUP BY Department HAVING COUNT(EmployeeID) > 5; -- Filtre les groupes
L'Ordre Complet des Opérations
Dans une requête SQL standard, les clauses sont exécutées dans un ordre spécifique :
FROM(Identifier les tables sources)WHERE(Filtrer les lignes individuelles)GROUP BY(Regrouper les lignes filtrées)HAVING(Filtrer les groupes résultants)SELECT(Déterminer quelles colonnes afficher)ORDER BY(Trier l'ensemble de résultats final)