Agrégation · 20 min
GROUP BY : grouper les résultats
Apprendre à regrouper les résultats par valeur de colonne (ou plusieurs colonnes) pour des agrégats par groupe (comptage, moyenne, somme...).
Contexte
Pour avoir des statistiques par catégorie (par étudiant, par cours, par matière...), on utilise GROUP BY.
Explication
GROUP BY col1, col2, ... rapproche les lignes de même valeur(s).
Règles :
- une colonne non groupée dans SELECT doit être une fonction d'agrégation (COUNT, SUM, AVG, MIN, MAX)
- on peut grouper sur une ou plusieurs colonnes
Syntaxe :
SELECT col1, COUNT(*) AS nb FROM une_table GROUP BY col1;
Exemple guidé
Nombre de notes par cours :
SELECT cours_id, COUNT(*) AS nb FROM notes GROUP BY cours_id ORDER BY cours_id;
Résultat :
| cours_id | nb |
|---|---|
| 1 | 3 |
| 2 | 3 |
| 3 | 6 |
| 4 | 4 |
| 5 | 2 |
| 6 | 3 |
| 7 | 2 |
| 8 | 2 |
| 9 | 2 |
GROUP BY groupe les lignes par valeur. Une colonne non groupée dans SELECT doit être une agrégation (COUNT, SUM, AVG...)
À retenir
GROUP BY = regroupement par colonne(s). Toute colonne non groupée dans SELECT DOIT être une agrégation. Le résultat est un par groupe.