La commande GROUP BY spécifie des groupes dans lesquels les lignes de sortie doivent être placées et calcule une valeur de résumé pour chacun des groupes si des fonctions d'agrégation sont employées avec la commande select.
| avg() | retourne la moyenne d'une colonne complète ou d'un regroupement, |
|---|---|
| count() | retourne le nombre de lignes ou de chaque regroupement, |
| max() | retourne la valeur maximum d'une colonne ou de chaque regroupement, |
| min() | retourne la valeur minimum d'une colonne ou de chaque regroupement, |
| sum() | retourne la somme des valeurs d'une colonne ou de chaque regroupement, |
Les groupes peuvent se composer de noms de colonne, de résultats ou de colonnes calculées.
SELECT champ, [..., champN, ]Fonction_Agregation(ChampFA) FROM nom_table [WHERE Condition] GROUP BY champ[, ..., champN] [HAVING Condition_regroupement] [ORDER BY champX, ...] SELECT p.professeur, c.classe, avg(c.note) FROM classe as c, professeurs as p WHERE c.id_cours = p.id_cours GROUP BY c.classe, p.professeur HAVING c.classe = 'Cinquième' ORDER BY 3, p.professeur;
Une requête de sélection utilisant la clause GROUP BY doit impérativement contenir au moins une fonction d'agrégation. Dans le cas contraire, cette requête ne pourrait être exécutée sans l'émission d'un message d'erreur.
SELECT c.classe, count(c.id_eleve), avg(c.note) FROM classe as c GROUP BY classe ORDER BY 3;
La clause HAVING, généralement employée avec la clause GROUP BY, permet de poser une condition supplémentaire dans la requête de sélection, s'appliquant sur le regroupement.
Tous les champs de la commande SELECT doivent être présents dans la clause HAVING, en commençant par le champ sur lequel doit s'appliquer en priorité le regroupement.
ExempleSELECT Editeur, SUM(Prix) FROM Librairie GROUP BY Editeur ' retourne
|