🎉 SEMANA DO CONSUMIDOR

Últimos dias para comprar os cursos com 50% de desconto

Ver detalhes

Postado em em 27 de setembro de 2024

Entenda a diferença entre WHERE e HAVING no SQL! Saiba quando e como usar cada comando para filtrar dados e otimizar suas consultas.

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

https://youtu.be/_6VJrz7iyps

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;
Visualizando os daods

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;
Visualizando os dados após o GROUP BY

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;
WHERE no SQL

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;
HAVING no SQL

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().

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!


Quer aprender mais sobre SQL com um minicurso básico gratuito?

Posts mais recentes de SQL

Posts mais recentes da Hashtag Treinamentos

Diego Monutti

Expert em conteúdos da Hashtag Treinamentos. Auxilia na criação de conteúdos de variados temas voltados para aqueles que acompanham nossos canais.