Grouping with GROUP BY · Группировка с помощью 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.
Группировка строк с GROUP BY
Агрегатная функция, такая как AVG, обычно сводит всю таблицу к одному числу. GROUP BY разбивает строки на группы, имеющие одинаковое значение, и выдает одну итоговую строку для каждой группы:
SELECT form, COUNT(*) AS n, ROUND(AVG(score), 2) AS avg_score
FROM student
GROUP BY form;
Это дает одну строку для каждого form, со счетом и средним значением этого класса.
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.)
Фильтрация групп с HAVING
WHERE фильтрует строки перед группировкой. Чтобы отфильтровать сами группы — используя агрегатную функцию — используйте HAVING:
SELECT form, COUNT(*) AS n
FROM student
GROUP BY form
HAVING COUNT(*) >= 3;
Это оставляет только формы, содержащие 3 или более студентов. (WHERE не может проверять COUNT(*); это может сделать HAVING.)
Common mistakes
- Filter groups with
HAVING, rows withWHERE. - A plain column beside an aggregate must be in
GROUP BY.
Частые ошибки
- Фильтруйте группы с помощью
HAVING, строки — с помощьюWHERE. - Обычный столбец рядом с агрегатной функцией должен находиться в
GROUP BY.
For each form, show the form, the number of students as n, and the average score (2 d.p.) as avg_score. Group by form. · Для каждого form вывести класс, количество учеников как n и средний балл (2 знака после запятой) как avg_score. Сгруппировать по form.
Click Run to see the output here. · Нажмите Запустить, чтобы увидеть результат здесь.
Show each form and its student count n, but only for forms with 3 or more students. Use HAVING. · Вывести каждый form и его количество учеников n, но только для классов с 3 или более учениками. Используйте HAVING.
Click Run to see the output here. · Нажмите Запустить, чтобы увидеть результат здесь.