Позволяет фильтровать результаты агрегации, сформированные с помощью GROUP BY. Он похож на оператор WHERE, но отличается тем, что WHERE выполняется до агрегации, а HAVING — после неё.
В операторе HAVING можно ссылаться на результаты агрегации из оператора SELECT по их псевдонимам. Кроме того, HAVING позволяет фильтровать по результатам дополнительных агрегатных функций, которые не выводятся в результате запроса.
Если у вас есть таблица sales следующего вида:
CREATE TABLE sales
(
region String,
salesperson String,
amount Float64
)
ORDER BY (region, salesperson);
Вы можете выполнить запрос к нему следующим образом:
SELECT
region,
salesperson,
sum(amount) AS total_sales
FROM sales
GROUP BY
region,
salesperson
HAVING total_sales > 10000
ORDER BY total_sales DESC;
Здесь будут перечислены продавцы, у которых общий объём продаж в регионе превышает 10 000.
HAVING нельзя использовать, если агрегация не используется. Вместо этого используйте WHERE. Последнее изменение 10 июня 2026 г.