В предыдущей главе мы говорили о соединении таблиц в SQL. В этой главе мы рассмотрим, как агрегировать данные в SQL с помощью предложения GROUP BY и агрегатных функций. Агрегирование данных позволяет нам вычислять сводную информацию, такую ​​как итоги, средние значения, количество и многое другое. Мы узнаем, как группировать данные на основе определенных столбцов и выполнять вычисления для каждой группы. К концу этого урока у вас будет четкое представление о том, как обобщать и анализировать данные с помощью SQL. Давайте начнем!

Главы этой серии

  1. Глава 1: Введение и основной синтаксис
  2. Глава 2: Фильтрация и сортировка данных
  3. Глава 3: Манипулирование данными
  4. Глава 4. Запросы к нескольким таблицам с помощью JOIN
  5. Глава 5: Агрегирование данных
  6. Глава 6: Изменение данных
  7. Глава 7: Расширенные концепции SQL
  8. Глава 8: Изменение структуры таблицы

1. Понимание агрегатных функций

Агрегатные функции выполняют вычисления над набором значений и возвращают один результат. Некоторые часто используемые агрегатные функции включают в себя:

  • SUM: вычисляет сумму значений в столбце.
  • AVG: вычисляет среднее значение в столбце.
  • COUNT: подсчитывает количество строк или ненулевых значений в столбце.
  • MIN: получает минимальное значение из столбца.
  • MAX: извлекает максимальное значение из столбца.

2. Использование предложения GROUP BY

Предложение GROUP BY используется для группировки строк на основе одного или нескольких столбцов. Это позволяет нам агрегировать данные и выполнять вычисления внутри каждой группы. Предположим, у нас есть таблица под названием «заказы» со столбцами «order_id», «customer_id» и «order_amount». Чтобы рассчитать общую сумму заказа для каждого клиента, используйте следующий синтаксис:

SELECT customer_id, SUM(order_amount) AS total_amount
FROM orders
GROUP BY customer_id;

Этот оператор группирует строки по «customer_id» и вычисляет сумму «order_amount» для каждого клиента, назначая псевдоним «total_amount» для вычисленного значения.

3. Фильтрация сгруппированных данных с помощью HAVING

Предложение Предложение HAVING работает аналогично предложению WHERE, но используется специально для фильтрации сгруппированных данных. Это позволяет нам указать условия для агрегированных значений. Например, давайте получим клиентов, разместивших заказы на общую сумму более 500 долларов США:

SELECT customer_id, SUM(order_amount) AS total_amount
FROM orders
GROUP BY customer_id
HAVING SUM(order_amount) > 500;

Предложение HAVING фильтрует группы на основе указанного условия.

4. Использование агрегатных функций с другими столбцами

Агрегатные функции можно использовать вместе с другими столбцами в операторе SELECT. Например, давайте получим общую сумму заказа, среднюю сумму заказа и количество заказов для каждого клиента:

SELECT customer_id, SUM(order_amount) AS total_amount, AVG(order_amount) AS average_amount, COUNT(*) AS order_count
FROM orders
GROUP BY customer_id;

Этот оператор вычисляет общую сумму заказа, среднюю сумму заказа и количество заказов для каждого клиента.

5. Вложенные агрегатные функции

Агрегатные функции также могут быть вложены друг в друга для выполнения более сложных вычислений. Рассчитаем среднюю сумму заказа для клиентов, разместивших более пяти заказов:

SELECT AVG(total_amount) AS average_amount
FROM (
  SELECT customer_id, SUM(order_amount) AS total_amount
  FROM orders
  GROUP BY customer_id
  HAVING COUNT(*) > 5
) AS subquery;

В этом примере мы используем подзапрос для расчета общей суммы заказа для каждого клиента, а затем вычисляем среднюю сумму заказа для клиентов с более чем пятью заказами.

6. Заключение

На этом уроке мы рассмотрели мощные возможности агрегирования данных в SQL с использованием предложения GROUP BY и агрегатных функций. Мы узнали, как группировать строки на основе определенных столбцов и выполнять вычисления для каждой группы, используя такие функции, как SUM, AVG, COUNT, MIN и MAX. Мы также увидели, как фильтровать сгруппированные данные с помощью предложения HAVING и использовать агрегатные функции вместе с другими столбцами. С помощью этих методов вы можете эффективно обобщать и анализировать данные, получая ценную информацию из своих баз данных SQL.

Если вы нашли этот курс полезным и хотели бы изучить больше бесплатных курсов, я приглашаю вас подписаться на мою учетную запись на Medium и связаться со мной в LinkedIn. Я регулярно делюсь ценным контентом на этих платформах.