SQL

Cláusula HAVING

A cláusula HAVING é uma ferramenta poderosa no SQL que permite filtrar resultados de consultas que utilizam funções de agregação, como SUM, COUNT, AVG, entre outras. Ao contrário da cláusula WHERE, que filtra registros antes da agregação, o HAVING filtra os resultados após a agregação, permitindo uma análise mais detalhada dos dados.

1. O que é a cláusula HAVING?

A cláusula HAVING é utilizada em conjunto com a cláusula GROUP BY para restringir o conjunto de resultados após a agregação. Isso significa que você pode aplicar condições nas colunas agregadas, garantindo que apenas os grupos que atendam a essas condições sejam retornados.

Sintaxe básica:

SELECT coluna1, função_agregada(coluna2)
FROM tabela
GROUP BY coluna1
HAVING condição;

coluna1: A coluna pela qual os resultados serão agrupados.

função_agregada(coluna2): A função de agregação aplicada à coluna.

condição: A condição que deve ser atendida após a agregação.

2. Exemplo de HAVING com GROUP BY

Suponha que você tenha uma tabela vendas que armazena informações sobre as vendas realizadas, e você deseja saber quais produtos tiveram um total de vendas superior a 100 unidades.

SELECT produto, SUM(quantidade) AS total_vendas
FROM vendas
GROUP BY produto
HAVING SUM(quantidade) > 100;

Neste exemplo:

  • GROUP BY produto agrupa os registros por produto;

  • SUM(quantidade) calcula o total de vendas para cada produto;

  • HAVING SUM(quantidade) > 100 filtra os resultados para mostrar apenas os produtos com vendas superiores a 100.

3. Diferença entre HAVING e WHERE

WHERE: Filtra os registros antes da agregação, ou seja, atua nos dados brutos.

SELECT produto
FROM vendas
WHERE quantidade > 10;

HAVING: Filtra os resultados após a agregação, atuando nos dados já processados.

SELECT produto, COUNT(*) AS total_vendas
FROM vendas
GROUP BY produto
HAVING COUNT(*) > 10;

4. Usando HAVING com múltiplas condições

Você pode aplicar múltiplas condições na cláusula HAVING usando operadores lógicos como AND e OR.

Exemplo:

SELECT vendedor, AVG(valor_venda) AS media_vendas
FROM vendas
GROUP BY vendedor
HAVING AVG(valor_venda) > 500 AND COUNT(*) > 5;

Neste exemplo, a consulta retorna apenas os vendedores que têm uma média de vendas superior a 500 e que realizaram mais de 5 vendas.

5. Casos de uso comuns para HAVING

  • Análise de Vendas: Filtrar produtos ou vendedores com base em total de vendas ou média de vendas;

  • Análise Financeira: Filtrar contas com base em totais de despesas ou receitas;

  • Relatórios Estatísticos: Restringir grupos de dados em relatórios que exigem agregações específicas.

A cláusula HAVING é essencial para realizar filtragens em consultas que utilizam funções de agregação, permitindo uma análise mais refinada dos dados. Compreender quando e como usá-la é crucial para extrair insights valiosos a partir de suas consultas SQL.

Dúvidas ou sugestões? Deixem nos comentários! Para mais dicas, acesse o nosso canal no YouTube:
https://youtube.com/criandobits

O seu computador está lento, travando ou dando tela azul… e você não faz ideia do que fazer?

Saiba que isso pode estar te fazendo perder dinheiro — seja com manutenção cara ou oportunidades que você está deixando passar.

Com o Super Técnico 2.0, você aprende na prática como diagnosticar defeitos, montar computadores do zero e fazer upgrades que realmente aumentam o desempenho, mesmo que você esteja começando do absoluto zero.

Você pode usar esse conhecimento para:

✔ Resolver seus próprios problemas sem depender de ninguém
✔ Ganhar dinheiro com manutenção e suporte técnico
✔ Ou até entrar de vez no mercado de TI

Tudo com aulas diretas ao ponto, sem enrolação e focadas no que realmente funciona no dia a dia.

👉 CLIQUE AQUI AGORA e veja todos os detalhes antes que essa oportunidade passe:

Super Técnico 2.0

Sobre o Autor

Benedito Silva Júnior
Benedito Silva Júnior

Bacharel em Sistemas de Informação e apaixonado por tecnologias e games do tempo da vovó!

0 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.