
Se você já precisou remover valores duplicados ou agrupar resultados em SQL, certamente encontrou os comandos GROUP BY e DISTINCT.
Mas qual deles usar em cada situação? Eles não são a mesma coisa?
A resposta é não! Apesar de parecerem similares, cada um tem uma finalidade específica. Neste artigo, você vai aprender:
- A diferença entre GROUP BY e DISTINCT
- Quando usar cada um
- Exemplos práticos para evitar erros comuns
1. O Que é DISTINCT?
O DISTINCT remove valores duplicados de uma consulta, com isso ele retorna apenas valores únicos de uma ou mais colunas.
Exemplo: Suponha que temos uma tabela cliente
com as seguintes cidades cadastradas:
ID_CLIENTE | NOME | CIDADE |
---|---|---|
1 | Ana Souza | São Paulo |
2 | Carlos Lima | São Paulo |
3 | Pedro Silva | Rio de Janeiro |
4 | Júlia Mendes | Curitiba |
5 | Lucas Alves | São Paulo |
Se quisermos listar quais cidades existem na tabela (sem repetir), usamos DISTINCT:
SELECT DISTINCT CIDADE FROM cliente;
Resultado:
CIDADE |
---|
São Paulo |
Rio de Janeiro |
Curitiba |
- DISTINCT remove as duplicatas e retorna apenas os valores únicos.
2. O Que é GROUP BY?
O GROUP BY é usado para agrupar dados e é frequentemente combinado com funções agregadas, como COUNT, SUM, AVG, MIN e MAX.
Exemplo: Se quisermos contar quantos clientes há em cada cidade, usamos GROUP BY:
SELECT CIDADE, COUNT(*) AS TOTAL_CLIENTE FROM cliente GROUP BY CIDADE;
Resultado:
CIDADE | TOTAL_CLIENTE |
---|---|
São Paulo | 3 |
Rio de Janeiro | 1 |
Curitiba | 1 |
- GROUP BY não só agrupa os dados, mas também permite operações matemáticas sobre eles.
3. Qual a Diferença Entre DISTINCT e GROUP BY?
Recurso | DISTINCT | GROUP BY |
---|---|---|
Remove duplicatas | ✅ Sim | 🚫 Não |
Agrupa valores | 🚫 Não | ✅ Sim |
Pode usar funções agregadas (COUNT, SUM, etc.) | 🚫 Não | ✅ Sim |
Retorna apenas valores únicos | ✅ Sim | 🚫 Não |
Resumo:
- Use DISTINCT quando quiser apenas eliminar valores duplicados.
- Use GROUP BY quando precisar agrupar dados e realizar cálculos.
4. Exemplos Práticos
Exemplo 1: Quantas cidades diferentes existem?
Aqui só queremos saber quais são as cidades únicas, então usamos DISTINCT
:
SELECT DISTINCT CIDADE FROM cliente;
- DISTINCT é a melhor escolha quando queremos apenas valores únicos.
Exemplo 2: Quantos clientes existem em cada cidade?
Agora queremos contar quantos clientes existem por cidade, então usamos GROUP BY
:
SELECT CIDADE, COUNT(*) AS TOTAL_CLIENTE FROM cliente GROUP BY CIDADE;
- GROUP BY é a melhor escolha quando queremos contar registros dentro de cada grupo.
Exemplo 3: Quais produtos já foram vendidos?
Aqui queremos apenas a lista de produtos vendidos sem contar quantas vezes foram vendidos:
SELECT DISTINCT PRODUTO FROM venda;
- DISTINCT é suficiente, pois só queremos os nomes dos produtos.
Exemplo 4: Quantas unidades de cada produto foram vendidas?
Se quisermos saber quantas unidades foram vendidas por produto, usamos GROUP BY
:
SELECT PRODUTO, SUM(QUANTIDADE) AS TOTAL_VENDIDO FROM venda GROUP BY PRODUTO;
- GROUP BY permite usar SUM() para somar valores dentro de cada grupo.
5. Erros Comuns ao Usar DISTINCT e GROUP BY
Erro 1: Usar DISTINCT em vez de GROUP BY para contar registros
- Errado:
SELECT DISTINCT CIDADE, COUNT(*) FROM cliente;
- Correto:
SELECT CIDADE, COUNT(*) FROM cliente GROUP BY CIDADE;
DISTINCT não pode ser combinado diretamente com funções agregadas.
Erro 2: Usar GROUP BY sem funções agregadas
- Errado:
SELECT CIDADE FROM cliente GROUP BY CIDADE;
- Correto:
SELECT DISTINCT CIDADE FROM cliente;
- Se não há funções como COUNT ou SUM, use DISTINCT.
Conclusão
- DISTINCT é usado para eliminar valores duplicados.
- GROUP BY é usado para agrupar valores e realizar cálculos.
- Sempre escolha a opção correta para evitar consultas lentas e resultados incorretos.
Se você quer aprender mais sobre boas práticas em SQL, continue acompanhando o Blog do SQL e conheça o curso SQL Simplificado, onde você aprende na prática como escrever consultas otimizadas!
Agora me conta: Você já usou DISTINCT ou GROUP BY da forma errada? Como percebeu o erro?
0 Comentários