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_CLIENTENOMECIDADE
1Ana SouzaSão Paulo
2Carlos LimaSão Paulo
3Pedro SilvaRio de Janeiro
4Júlia MendesCuritiba
5Lucas AlvesSã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:

CIDADETOTAL_CLIENTE
São Paulo3
Rio de Janeiro1
Curitiba1
  • 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?

RecursoDISTINCTGROUP 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?

Tags: | |

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 *

Solicitar exportação de dados

Use este formulário para solicitar uma cópia de seus dados neste site.

Solicitar a remoção de dados

Use este formulário para solicitar a remoção de seus dados neste site.

Solicitar retificação de dados

Use este formulário para solicitar a retificação de seus dados neste site. Aqui você pode corrigir ou atualizar seus dados, por exemplo.

Solicitar cancelamento de inscrição

Use este formulário para solicitar a cancelamento da inscrição do seu e-mail em nossas listas de e-mail.