Pular para o conteúdo principal
Permite filtrar os resultados da agregação produzidos por GROUP BY. É semelhante à cláusula WHERE, mas a diferença é que WHERE é executada antes da agregação, enquanto HAVING é executada depois. É possível referenciar na cláusula HAVING, por meio do alias, os resultados da agregação da cláusula SELECT. Como alternativa, a cláusula HAVING pode filtrar resultados de agregações adicionais que não são retornados nos resultados da consulta.

Exemplo

Se você tiver uma tabela sales como esta:
CREATE TABLE sales
(
    region String,
    salesperson String,
    amount Float64
)
ORDER BY (region, salesperson);
Você pode consultá-la assim:
SELECT
    region,
    salesperson,
    sum(amount) AS total_sales
FROM sales
GROUP BY
    region,
    salesperson
HAVING total_sales > 10000
ORDER BY total_sales DESC;
Isso listará os vendedores com total de vendas superior a 10.000 em sua região.

Limitações

HAVING não pode ser usado se não houver agregação. Use WHERE em vez disso.
Última modificação em 12 de junho de 2026