Como usar HAVING para filtrar agrupamentos no SQL?

O HAVING no SQL permite filtrar registros após o agrupamento feito pelo GROUP BY, sendo ideal para filtrar dados agregados.

Como usar HAVING para filtrar agrupamentos no SQL?

O HAVING no SQL é utilizado para filtrar os resultados após o agrupamento com GROUP BY. Diferente do WHERE, que filtra registros individuais, HAVING permite aplicar filtros em dados agregados.

Estrutura básica do HAVING

Se quisermos listar categorias que possuam mais de 10 produtos, podemos usar:

SELECT categoria, COUNT(*) AS total_produtos 
FROM produtos 
GROUP BY categoria 
HAVING COUNT(*) > 10;

Aqui, HAVING filtra apenas grupos com mais de 10 registros.

Diferença entre WHERE e HAVING

Cláusula Quando usar?
WHERE Para filtrar registros antes do agrupamento
HAVING Para filtrar grupos após o agrupamento

Usando HAVING com outras funções de agregação

Podemos aplicar HAVING a outras funções, como AVG() e SUM():

SELECT categoria, AVG(preco) AS preco_medio 
FROM produtos 
GROUP BY categoria 
HAVING AVG(preco) > 100;

Isso retorna apenas categorias com preço médio acima de 100.

Usando HAVING com múltiplas condições

Podemos combinar condições com AND ou OR:

SELECT categoria, COUNT(*) AS total_produtos, AVG(preco) AS preco_medio 
FROM produtos 
GROUP BY categoria 
HAVING COUNT(*) > 10 AND AVG(preco) > 50;

Isso retorna categorias que têm mais de 10 produtos e preço médio acima de 50.

Cuidados ao usar HAVING

  • HAVING só pode ser usado após um GROUP BY.
  • Se precisar filtrar antes do agrupamento, use WHERE.
  • Em bases grandes, HAVING pode impactar o desempenho. Prefira filtrar o máximo possível com WHERE antes do GROUP BY.

O uso do HAVING no SQL é essencial para relatórios que precisam filtrar grupos de dados já agregados. Por exemplo, em um sistema de vendas, podemos querer listar apenas os clientes que compraram acima de um determinado valor total. Em um banco de dados de notas escolares, HAVING pode ser usado para encontrar turmas cuja média dos alunos esteja abaixo da nota mínima. Combinado com GROUP BY, HAVING permite criar consultas detalhadas e segmentadas para diferentes análises.

Algumas aplicações:

  • Filtrar categorias com mais de um certo número de produtos
  • Selecionar clientes que gastaram acima de um valor mínimo
  • Listar turmas cuja média esteja abaixo de um valor específico
  • Obter regiões onde as vendas totais ultrapassaram um certo limite
  • Filtrar funcionários que registraram mais de um número mínimo de vendas

Dicas para quem está começando

  • Use HAVING sempre depois de GROUP BY
  • Se precisar filtrar antes do agrupamento, utilize WHERE
  • Evite HAVING em consultas muito grandes sem otimizar com WHERE antes
  • Combine HAVING com ORDER BY para visualizar os dados de forma organizada
  • Teste diferentes filtros com HAVING para compreender seu impacto nos resultados

Contribuições de Rodrigo Martins

Compartilhe este tutorial: Como usar HAVING para filtrar agrupamentos no SQL?

Compartilhe este tutorial

Continue aprendendo:

Como usar GROUP BY para agrupar resultados no SQL?

O GROUP BY no SQL permite agrupar registros com base em valores comuns de uma coluna, possibilitando cálculos agregados como COUNT, SUM e AVG.

Tutorial anterior

Qual a diferença entre WHERE e HAVING no SQL?

A principal diferença entre WHERE e HAVING no SQL é que WHERE filtra registros individuais antes do agrupamento, enquanto HAVING filtra grupos após o agrupamento.

Próximo tutorial