Каково назначение оператора GROUP BY в SQL

Ответ

Оператор GROUP BY в SQL используется для объединения строк с одинаковыми значениями в указанных столбцах в одну сводную строку. Это позволяет применять к каждой такой группе агрегатные функции, такие как COUNT(), SUM(), AVG(), MAX() или MIN().

Основная цель — получить агрегированную статистику по категориям данных.

Пример:

Предположим, есть таблица Orders с заказами:

order_id customer_id amount
1 10 100.00
2 20 150.00
3 10 50.00
4 20 200.00

Чтобы посчитать общую сумму заказов для каждого клиента, используется GROUP BY:

SELECT
    customer_id,
    SUM(amount) AS total_amount,
    COUNT(order_id) AS order_count
FROM Orders
GROUP BY customer_id;

Результат:

customer_id total_amount order_count
10 150.00 2
20 350.00 2

Ключевые правила:

  1. Согласованность SELECT и GROUP BY: Все столбцы в списке SELECT, не являющиеся агрегатными функциями, обязательно должны быть перечислены в GROUP BY.
  2. Фильтрация групп: Для фильтрации результатов после группировки используется оператор HAVING, а не WHERE (который фильтрует строки до группировки).