Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

HAVING

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

Navigation