MS SQL Server - Выборка данных - Секция HAVING

MS SQL Server

Секция HAVING

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

SELECT stor_id, pub_name, title, AVG(qty)
FROM sales, titles, publishers
WHERE sales.title_id = titles.title_id
AND publishers.pub_id = titles.pub_id
GROUP BY pub_name, title, stor_id
HAVING AVG(qty) > 10

Данный пример вычисляет среднее арифметическое столбца qty для pub_name, title и stor_id. Возвращаются только те записи, в которых вычисленное среднее арифметическое больше 10.

ВАЖНО!

Главное отличие между секциями HAVING и WHERE заключается в моменте их выполнения. Секция WHERE выполняется во время построения результата, а секция HAVING — после того, как будет сгенерирован промежуточный набор. Вот почему агрегатные функции могут использоваться в секции HAVING, но не в секции WHERE.


 

Добавить комментарий


Защитный код
Обновить