Grouping with GROUP BY · Groupement avec GROUP BY
Grouping rows with GROUP BY
An aggregate like AVG normally summarises the whole table into one number. GROUP BY splits the rows into groups that share a value, and gives one summary row per group:
This gives one row for each form, with that form's count and average.
Regrouper des lignes avec GROUP BY
Un agrégat comme AVG résume normalement la table entière en un seul nombre. GROUP BY divise les lignes en groupes partageant une valeur, et donne une ligne de résumé par groupe :
SELECT form, COUNT(*) AS n, ROUND(AVG(score), 2) AS avg_score
FROM student
GROUP BY form;
Cela donne une ligne pour chaque form, avec le comptage et la moyenne de cette classe.
Filtering groups with HAVING
WHERE filters rows before grouping. To filter the groups themselves — using an aggregate — use HAVING:
This keeps only forms with 3 or more students. (WHERE cannot test COUNT(*); HAVING can.)
Filtrer des groupes avec HAVING
WHERE filtre les lignes avant le groupement. Pour filtrer les groupes eux-mêmes — en utilisant un agrégat — utilisez HAVING :
SELECT form, COUNT(*) AS n
FROM student
GROUP BY form
HAVING COUNT(*) >= 3;
Ceci ne garde que les classes avec 3 étudiants ou plus. (WHERE ne peut pas tester COUNT(*) ; HAVING peut.)
Common mistakes
- Filter groups with
HAVING, rows withWHERE. - A plain column beside an aggregate must be in
GROUP BY.
Erreurs courantes
- Filtrez les groupes avec
HAVING, les lignes avecWHERE. - Une colonne ordinaire à côté d'un agrégat doit être dans
GROUP BY.
For · Pour each · chaque form, show the form, the number of students as n, and the average score (2 d.p.) as avg_score. Group by form. · Pour chaque form, affichez la classe, le nombre d'étudiants en tant que n, et la note moyenne (2 décimales) en tant que avg_score. Group by form.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.
Show each form and its student count n, but only for forms with 3 or more students. Use HAVING. · Affichez chaque form et son comptage d'étudiants n, mais uniquement pour les classes avec 3 ou plus d'étudiants. Utilisez HAVING.
Click Run to see the output here. · Cliquez sur Exécuter pour voir le résultat ici.