Diferença Entre WHERE e HAVING no SQL
Entenda a diferença entre WHERE e HAVING no SQL! Saiba quando e como usar cada comando para filtrar dados e otimizar suas consultas.
No SQL, o WHERE filtra as linhas individuais antes do agrupamento, agindo sobre os dados brutos; o HAVING filtra depois do GROUP BY, agindo sobre os resultados agregados. Por isso condições com COUNT, SUM ou AVG só funcionam no HAVING. Use WHERE para os dados originais e HAVING para os grupos já resumidos.
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!
O que você aprende neste vídeo
Resposta rápida: A aula ensina a diferença prática entre WHERE e HAVING no SQL, do filtro na tabela bruta até o filtro sobre o resultado agrupado. Você aprende a usar WHERE antes do GROUP BY, aplicar HAVING sobre a tabela já agrupada, filtrar por contagem e conferir os dois resultados numa tabela de clientes.
Neste vídeo (7 min):
- 1:00 - Comparação entre um
SELECT *simples e uma consulta comGROUP BYna tabela de clientes - 2:00 - Resultado do agrupamento por escolaridade: 21 pós-graduação, 46 parcial, 27 ensino médio e 6 graduação
- 3:00 -
WHEREfiltrando o gênero masculino antes do agrupamento e o efeito nas contagens por escolaridade - 4:00 -
HAVINGagindo sobre a tabela já agrupada, e não sobre as linhas originais da consulta - 5:00 - Filtro
HAVINGcom contagem maior ou igual a 25, que deixa só parcial e ensino médio - 6:00 - Regra final:
WHEREantes doGROUP BYeHAVINGdepois do agrupamento
Trechos do vídeo:
- O
WHEREfiltra as linhas antes do agrupamento; oHAVINGfiltra o resultado depois que oGROUP BYjá rodou - Condições sobre funções de agregação, como
COUNT,SUMeAVG, só funcionam noHAVING - Filtrar o gênero masculino antes do
GROUP BYmuda as contagens de 21, 46, 27 e 6 para 9, 25, 11 e 3
Diferença Entre WHERE e HAVING no SQL
Você já conhece os comandos WHERE e HAVING no SQL? Sabe como eles funcionam e qual é a diferença entre eles?
Esses dois comandos SQL são fundamentais para filtrar consultas em bancos de dados, principalmente quando lidamos com agrupamentos.
Saber quando e como utilizar cada um desses filtros é essencial para realizar consultas e análises de forma correta, já que ambos são usados para restringir o conjunto de resultados.
No entanto, cada um deve ser aplicado em um momento específico do processo de consulta.
Exemplo prático com SELECT e GROUP BY
Antes de aplicarmos WHERE e HAVING, vamos realizar duas consultas para visualizar os dados da nossa base.
Primeiro, selecionamos todos os dados da tabela para visualizá-la de forma completa.
SELECT * FROM clientes;
Na segunda consulta, utilizaremos o GROUP BY para agrupar os clientes por escolaridade, mostrando quantos clientes existem em cada categoria educacional.
SELECT Escolaridade, COUNT(*) FROM clientes
GROUP BY Escolaridade;
Agora que já conhecemos os nossos dados, podemos partir para a aplicação prática dos comandos WHERE e HAVING.
Quando trabalhamos com tabelas, é comum querermos filtrar os dados retornados pela consulta SQL, e é aí que entram os comandos WHERE e HAVING.
O que é o WHERE no SQL?
O comando WHERE é utilizado para filtrar registros antes de qualquer tipo de agrupamento ser realizado.
Ou seja, ele age diretamente sobre os dados brutos, antes que funções de agregação, como GROUP BY ou SUM(), sejam aplicadas.
Esse filtro reduz o conjunto de dados com base em condições definidas pelo usuário, antes que qualquer cálculo ou agrupamento seja realizado.
Por exemplo, podemos considerar apenas clientes do gênero masculino antes de realizar o agrupamento por escolaridade.
SELECT Escolaridade, COUNT(*) FROM clientes
WHERE Genero = 'M'
GROUP BY Escolaridade;
Neste exemplo, o comando WHERE está filtrando todos os clientes do gênero masculino antes de qualquer outro tipo de processamento. Primeiro, o filtro por gênero é aplicado, para, em seguida, ocorrer o agrupamento por escolaridade.
O que é o HAVING no SQL?
Por outro lado, o HAVING é usado para filtrar os resultados após o agrupamento dos dados. Isso significa que ele age sobre os grupos gerados por um comando GROUP BY, permitindo refinar os dados agrupados com base em condições agregadas.
Por exemplo, podemos visualizar apenas escolaridades com uma contagem maior ou igual a 25.
SELECT Escolaridade, COUNT(*) FROM clientes
GROUP BY Escolaridade
HAVING COUNT(*) >= 25;
Nesse caso, o comando HAVING filtra os resultados dos grupos de clientes que têm mais de 25 ocorrências em cada nível de escolaridade. Ele é aplicado depois que os grupos são criados, o que permite filtrar diretamente os resultados agregados.
Ou seja, primeiro as informações são agrupadas por escolaridade e, em seguida, filtradas com base na contagem obtida.
Principal Diferença entre WHERE e HAVING
A principal diferença entre WHERE e HAVING está no momento em que o filtro é aplicado. O WHERE age antes do agrupamento e lida com dados individuais. Já o HAVING age após o agrupamento e lida com dados agregados.
Quando usar WHERE ou HAVING?
Utilize o WHERE quando precisar filtrar os dados brutos antes de realizar qualquer cálculo ou agrupamento.
Já o HAVING deve ser usado quando for necessário filtrar grupos de dados já agregados, baseando-se nos resultados de funções de agregação, como COUNT(), SUM() ou AVG().
Perguntas frequentes
1. Quando usar WHERE e quando usar HAVING no SQL?
Use o WHERE quando precisar filtrar registros antes de qualquer agrupamento, com base em valores de colunas comuns. Use o HAVING quando precisar filtrar grupos já formados pelo GROUP BY, com base em funções de agregação como COUNT, SUM ou AVG. Os dois podem aparecer na mesma consulta.
2. Posso usar WHERE e HAVING na mesma consulta?
Sim, e é bastante comum. O WHERE age primeiro, reduzindo as linhas antes do agrupamento; em seguida o GROUP BY forma os grupos e o HAVING filtra esses grupos pelo resultado da agregação. Exemplo: filtrar apenas clientes do gênero masculino no WHERE e depois manter só grupos com contagem maior que 25 no HAVING.
3. Por que não posso usar COUNT dentro do WHERE?
Porque o WHERE é avaliado antes do agrupamento, quando as funções de agregação ainda não foram calculadas. Tentar usar COUNT, SUM ou AVG no WHERE gera erro. Para filtrar por um valor agregado, você precisa do HAVING, que é executado após o GROUP BY, quando esses cálculos já existem.
4. O HAVING funciona sem o GROUP BY?
Na maioria dos bancos, o HAVING é usado junto com o GROUP BY para filtrar grupos. Alguns SGBDs aceitam HAVING sem GROUP BY quando há uma função de agregação sobre a tabela inteira, tratando tudo como um único grupo. Ainda assim, o uso recomendado e mais claro é sempre acompanhado de GROUP BY.
Conclusão – Diferença Entre WHERE e HAVING no SQL
O WHERE e o HAVING são ferramentas essenciais no SQL para filtrar dados em diferentes estágios de uma consulta. O WHERE é usado para restringir os resultados antes do agrupamento, enquanto o HAVING refina os dados após o agrupamento.
Compreender a diferença entre eles é fundamental para escrever consultas SQL mais eficientes e precisas.
Esse conhecimento é especialmente útil ao lidar com grandes volumes de dados em tabelas relacionais, onde a performance e a precisão das consultas são essenciais para obter insights valiosos.
Quer dominar o SQL e otimizar suas consultas? Confira o nosso Curso Completo SQL Impressionador e aprenda a construir análises de dados cada vez mais completas.
Hashtag Treinamentos
Para acessar outras publicações de SQL, clique aqui!
Posts mais recentes de SQL
- UPDATE em SQL: guia completo para usar o comando sem cometer errosUPDATE em SQL: entenda como atualizar dados com segurança, sintaxe, exemplos práticos e cuidados para evitar erros comuns.
- SQL DELETE: como usar o comando para excluir dados?SQL DELETE: entenda como excluir registros, usar a sintaxe correta e evitar erros ao remover dados de tabelas em bancos SQL.
- Guia completo para desenvolvedor SQL: o que faz, salário e como aprenderConheça as funções do desenvolvedor SQL, salários médios, como começar na área e como está o atual mercado de trabalho.
Posts mais recentes da Hashtag Treinamentos
- Planilha de Controle de Notas Fiscais no Excel [Grátis]Baixe a planilha de controle de notas fiscais no Excel grátis: calcule ISS e retenções, veja o que está em aberto e gere a cobrança de cada nota de serviço.
- Qual IA usar na empresa: ChatGPT, Claude ou Perplexity?Qual IA usar na empresa: veja as diferenças entre ChatGPT, Claude e Perplexity e quando cada um rende mais em cada área da sua equipe.
- Apostilas Gratuitas em PDF: Excel, Power BI, Python e IABaixe apostilas gratuitas em PDF de Excel, Power BI, Python, Claude e agentes de IA, com exercícios e gabarito. Escolha a sua e comece hoje.








