🔎 HAVING no SQL

Introdução

O comando HAVING é utilizado para filtrar resultados após um agrupamento realizado com GROUP BY.

Diferente do WHERE, que filtra registros antes do agrupamento, o HAVING filtra os grupos já calculados.

📌 WHERE filtra linhas. HAVING filtra resultados agrupados.

Sintaxe Básica

SELECT coluna,
FUNÇÃO_AGREGACAO(coluna)

FROM tabela

GROUP BY coluna

HAVING condição;

Exemplo de Tabela

VENDAS

+----+----------+--------+

| ID | Cliente  | Valor  |

+----+----------+--------+

| 1  | Ana      | 500    |

| 2  | Carlos   | 700    |

| 3  | Ana      | 300    |

| 4  | Pedro    | 200    |

+----+----------+--------+

GROUP BY sem HAVING

SELECT
cliente,
SUM(valor)

FROM vendas

GROUP BY cliente;

Retorna todos os clientes agrupados.

Filtrando com HAVING

SELECT
cliente,
SUM(valor) AS total

FROM vendas

GROUP BY cliente

HAVING total > 500;

Retorna apenas clientes com compras superiores a 500.

HAVING com COUNT()

SELECT
cidade,
COUNT(*) AS quantidade

FROM clientes

GROUP BY cidade

HAVING quantidade > 10;

Mostra apenas cidades com mais de 10 clientes.

HAVING com AVG()

SELECT
departamento,
AVG(salario) AS media

FROM funcionarios

GROUP BY departamento

HAVING media > 5000;

Exibe departamentos com média salarial acima do valor informado.

Diferença entre WHERE e HAVING

WHERE HAVING
Filtra registros individuais Filtra grupos
Executado antes do GROUP BY Executado após GROUP BY
Não usa agregações normalmente Usado com COUNT, SUM, AVG

Exemplo Completo

SELECT
categoria,
COUNT(*) AS produtos,
AVG(preco) AS media_preco

FROM produtos

GROUP BY categoria

HAVING produtos > 5;

Exibe categorias com mais de cinco produtos cadastrados.

Aplicações no Mundo Real

Sistema Utilização
E-commerce Categorias com maior venda
Financeiro Clientes com alto faturamento
RH Departamentos com maior média salarial
CRM Regiões com muitos clientes

Erros Comuns

Erro Problema
Usar HAVING sem GROUP BY Consulta incorreta
Usar WHERE com agregações Erro de lógica
Aplicar filtro no lugar errado Resultado incorreto
Esquecer função agregadora Grupo inválido

Boas Práticas

Resumo da Aula

🎓 Aula concluída! Agora você sabe utilizar HAVING para filtrar resultados agrupados e criar consultas SQL mais avançadas.