Having
A cláusula HAVING
no PostgreSQL é usada em conjunto com a cláusula GROUP BY
para filtrar os resultados de grupos agregados baseados em condições específicas. É semelhante à cláusula WHERE
, mas é usada para filtrar grupos de resultados, não linhas individuais.
Aqui está a sintaxe básica da cláusula HAVING
:
SELECT coluna1, função_agregada(coluna2), ...
FROM nome_da_tabela
GROUP BY coluna1
HAVING condição;
coluna1
: Coluna pela qual você deseja agrupar os resultados.função_agregada(coluna2)
: Função agregada que você deseja aplicar àcoluna2
.condição
: Condição pela qual você deseja filtrar grupos. Semelhante à cláusulaWHERE
, mas aplicada após a agregação.
Aqui está um exemplo prático para entender como usar a cláusula HAVING
:
Exemplo:
Suponha que você tenha uma tabela chamada vendas
com as colunas produto
, quantidade
e preco
. Você deseja encontrar os produtos cujo total de vendas (quantidade * preço) é maior que 1000.
SELECT produto, SUM(quantidade * preco) as total_vendas
FROM vendas
GROUP BY produto
HAVING SUM(quantidade * preco) > 1000;
Neste exemplo, a cláusula HAVING
é usada para filtrar grupos de resultados onde o total de vendas é maior que 1000.
A cláusula HAVING
é útil quando você precisa aplicar condições às funções agregadas, como SUM()
, AVG()
, COUNT()
, etc., após agrupar os dados. Ele permite que você filtre grupos com base em valores calculados a partir das colunas agrupadas.