Ответ
Оператор 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 |
Ключевые правила:
- Согласованность
SELECT
иGROUP BY
: Все столбцы в спискеSELECT
, не являющиеся агрегатными функциями, обязательно должны быть перечислены вGROUP BY
. - Фильтрация групп: Для фильтрации результатов после группировки используется оператор
HAVING
, а неWHERE
(который фильтрует строки до группировки).