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áusula WHERE, 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.