Группировка данных с GROUP BY и фильтрация с HAVING
В SQL оператор GROUP BY
используется для группировки строк в таблице по одному или нескольким столбцам. Это позволяет выполнять агрегатные функции, такие как SUM
, COUNT
, AVG
и другие, над каждой группой. Оператор HAVING
применяется для фильтрации групп, основанной на результатах агрегатных функций.
Вот базовая структура запроса, использующего GROUP BY
и HAVING
:
Пример
Предположим, у нас есть таблица sales
с данными о продажах:
id | продавец | сумма |
---|---|---|
1 | Иван | 100 |
2 | Ольга | 200 |
3 | Иван | 150 |
4 | Ольга | 250 |
5 | Иван | 200 |
И мы хотим узнать, какие продавцы имеют общую сумму продаж более 300. Для этого мы можем использовать следующий запрос:
Разбор запроса
SELECT продавец, SUM(сумма) AS общая_сумма
— выбираем столбецпродавец
и вычисляем общую сумму продаж для каждого продавца.FROM sales
— указываем таблицу, из которой берем данные.GROUP BY продавец
— группируем строки по столбцупродавец
.HAVING SUM(сумма) > 300
— фильтруем группы, оставляя только те, у которых общая сумма продаж больше 300.
В результате выполнения этого запроса мы получим:
продавец | общая_сумма |
---|---|
Иван | 450 |
Ольга | 450 |
Этот пример показывает, как можно использовать GROUP BY
для группировки данных и HAVING
для фильтрации групп на основе агрегатных значений.
Last updated