Какова функция SQL-клаузы 'HAVING'?

Функция SQL-клаузы 'HAVING'

'Having' - это ключевое слово в SQL, которое позволяет пользователю фильтровать результаты, полученные с помощью оператора 'GROUP BY'. На самом деле, это аналогично использованию оператора WHERE, но 'HAVING' применяется вместе с функциями группировки, такими как COUNT, AVG, MAX, MIN и т.д.

Если в SQL-запросе используется оператор GROUP BY, то условие фильтрации, указанное в клаузе WHERE, применяется к каждой строке, прежде чем строки группируются. Когда требуется фильтровать группы по определённому условию, то здесь на помощь приходит клауза HAVING.

Допустим, у нас есть таблица продаж со следующими данными:

| Продавец | Проданный товар | |----------|-----------------| | Андрей | 10 | | Сергей | 15 | | Андрей | 20 | | Мария | 25 |

И мы хотим найти продавцов, которые продали товаров на сумму больше 20. Для этого мы можем использовать следующий SQL-запрос с клаузой HAVING:

SELECT продавец, SUM(проданный_товар)
FROM продажи
GROUP BY продавец
HAVING SUM(проданный_товар) > 20;

Результат будет следующим:

| Продавец | SUM(проданный_товар) | |----------|----------------------| | Андрей | 30 | | Мария | 25 |

Таким образом, с помощью клаузы HAVING мы смогли фильтровать агрегированные данные после группировки. Но стоит понимать, что HAVING без GROUP BY имеет меньше смысла, так как он будет работать как клауза WHERE.

Related Questions

Считаете ли это полезным?