#5 – Агрегация и группировка

#5 – Агрегация и группировка

В уроке вы изучите использование встроенных SQL функций, а также познакомитесь с группировкой данных. Вы изучите операторы GROUP BY и HAVING для фильтрации.

Видеоурок

Когда мы работаем с большими объемами данных, часто нужно не просто вывести все строки, а получить сводную информацию — например, посчитать количество заказов, найти среднюю цену или сумму продаж. Для этого в 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 месяца

Также стоит посмотреть

Создание динамического веб сайта
7 уроков
Программа на C# .NET Windows Forms
7 уроков
Изучение C# WPF на практике. Создание программ на C#
10 уроков
Видеокурс по PHP, MySQL / Создание динамического сайта
Уроки Java для профессионалов
14 уроков
Изучение языка PHP, а также MySQL
28 уроков
Комментарии
Добавить комментарий

Пока комментариев нет