#5 – Агрегация и группировка
Видеоурок
Когда мы работаем с большими объемами данных, часто нужно не просто вывести все строки, а получить сводную информацию — например, посчитать количество заказов, найти среднюю цену или сумму продаж. Для этого в SQL используются агрегатные функции и оператор GROUP BY.
Агрегатные функции
Агрегатные функции выполняют вычисления над группой строк и возвращают одно значение. Вот основные из них:
COUNT()— считает количество строкSUM()— вычисляет суммуAVG()— вычисляет среднее значениеMAX()— возвращает максимальное значениеMIN()— возвращает минимальное значение
Пример:
SELECT COUNT(id) FROM orders; // количество заказов
SELECT SUM(price) FROM orders; // общая сумма всех заказов
SELECT AVG(price) FROM orders; // средняя цена заказа
SELECT MAX(price) FROM orders; // максимальная цена
SELECT MIN(price) FROM orders; // минимальная цена
Группировка данных
Чтобы агрегировать данные не по всей таблице, а по определённым категориям, используют GROUP BY. Он объединяет строки с одинаковыми значениями в указанном столбце.
// количество заказов у каждого пользователя
SELECT user_id, COUNT(id) AS total_orders
FROM orders
GROUP BY user_id;
// сумма заказов по каждому пользователю
SELECT user_id, SUM(price) AS total_spent
FROM orders
GROUP BY user_id;
Здесь результат — не одно число, а несколько строк: по одной для каждого пользователя.
Фильтрация агрегированных данных
Если нужно фильтровать уже сгруппированные данные, используется не WHERE, а HAVING. Оператор WHERE фильтрует отдельные строки до группировки, а HAVING — группы после неё.
// пользователи, у которых сумма заказов больше 1500
SELECT user_id, SUM(price) AS total_spent
FROM orders
GROUP BY user_id
HAVING SUM(price) > 1500;
Подзапросы с агрегатами
Агрегатные функции можно использовать и в подзапросах. Например, чтобы вывести все заказы, сумма которых выше среднего:
SELECT *
FROM orders
WHERE price > (SELECT AVG(price) FROM orders);
Агрегация и группировка — мощный инструмент анализа данных. С их помощью можно превращать таблицы из простых списков в аналитические отчёты: находить средние значения, суммы, максимумы и многое другое. Эти знания особенно полезны при создании дашбордов и статистики для ваших приложений.
Исходный код
Весь код будет доступен после подписки на проект! Задание к уроку
Необходимо оформить подписку на проект, чтобы получить доступ ко всем домашним заданиям
Большое задание по курсу
Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца
Также стоит посмотреть