Перейти к основному содержанию
Позволяет фильтровать результаты агрегации, сформированные с помощью 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 г.