Ответ
Оператор 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(который фильтрует строки до группировки).