GROUP BY
GROUP BY создаёт отдельный итог для каждой группы
Без группировки агрегатная функция считает итог по всей выборке. GROUP BY делит строки на группы по одинаковым значениям и запускает агрегирование отдельно для каждой группы.
SELECT status, COUNT(*) AS order_count
FROM orders
GROUP BY status;
Если в таблице есть заказы со статусами NEW, PAID и CANCELLED, результат содержит по одной строке для каждого статуса и количество заказов в этой группе.
Что можно выводить рядом с агрегатом
После группировки столбец в SELECT должен либо определять группу, либо использоваться внутри агрегатной функции. Иначе непонятно, какое значение из нескольких строк группы нужно вывести.
SELECT category, AVG(price) AS average_price
FROM products
GROUP BY category;
Здесь category определяет группу, а AVG(price) вычисляет одно значение для строк внутри этой группы.
Полезно мысленно представить GROUP BY как «собрать одинаковые значения в корзины».
После этого агрегатная функция считается отдельно внутри каждой такой корзины.
Проверь себя
Разбор задания
Ментор знает решение и поможет тебе прийти к нему самостоятельно
Войди, чтобы использовать Ментора
Ментор учитывает текущую задачу и историю диалога.
Войти
Проверь важные нюансы и ответ после собственной попытки.
Войди, чтобы посмотреть решение
Решение и разбор доступны после авторизации.
Войти