#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 місяця
Також варто подивитися