Grouping with GROUP BY · Agrupamento com 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.
Agrupando linhas com GROUP BY
Uma agregação como AVG normalmente resume a tabela inteira em um único número. GROUP BY divide as linhas em grupos que compartilham um valor e fornece uma linha de resumo por grupo:
SELECT form, COUNT(*) AS n, ROUND(AVG(score), 2) AS avg_score
FROM student
GROUP BY form;
Isso dá uma linha para cada form, com a contagem e a média daquela turma.
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.)
Filtrando grupos com HAVING
WHERE filtra linhas antes do agrupamento. Para filtrar os próprios grupos — usando uma agregação — use HAVING:
SELECT form, COUNT(*) AS n
FROM student
GROUP BY form
HAVING COUNT(*) >= 3;
Isso mantém apenas turmas com 3 ou mais alunos. (WHERE não pode testar COUNT(*); HAVING pode.)
Common mistakes
- Filter groups with
HAVING, rows withWHERE. - A plain column beside an aggregate must be in
GROUP BY.
Erros comuns
- Filtre grupos com
HAVING, linhas comWHERE. - Uma coluna comum ao lado de uma agregação deve estar em
GROUP BY.
For · A favor each · cada form, show the form, the number of students as n, and the average score (2 d.p.) as avg_score. Group by form. · Para cada form, exiba a turma, o número de alunos como n e a nota média (2 d.p.) como avg_score. Agrupe por form.
Click Run to see the output here. · Clique em Executar para ver a saída aqui.
Show each form and its student count n, but only for forms with 3 or more students. Use HAVING. · Exiba cada form e sua contagem de alunos n, mas apenas para turmas com 3 ou mais alunos. Use HAVING.
Click Run to see the output here. · Clique em Executar para ver a saída aqui.