
Nem todo resultado inesperado em SQL é sinal de erro. Às vezes, o problema está na forma como a query foi construída ou em uma lógica que o analista não percebeu.
Neste artigo, você verá um exemplo real onde a consulta roda normalmente, mas o resultado causa estranhamento. A missão é identificar:
“O que está acontecendo por trás desse resultado?”
1. As Tabelas Envolvidas
🗂️ Tabela: cliente
ID_CLIENTE | NOME |
---|---|
1 | Ana Souza |
2 | Bruno Lima |
3 | Carla Torres |
🗂️ Tabela: pedido
ID_PEDIDO | ID_CLIENTE | STATUS | VALOR_TOTAL |
---|---|---|---|
101 | 1 | confirmado | 200.00 |
102 | 2 | cancelado | 300.00 |
103 | 2 | confirmado | 100.00 |
2. A Query Que Gera o Resultado Surpreendente
SELECT C.NOME, SUM(P.VALOR_TOTAL) AS TOTAL
FROM cliente C
JOIN pedido P ON C.ID_CLIENTE = P.ID_CLIENTE
WHERE P.STATUS = 'confirmado'
GROUP BY C.NOME;
3. O Resultado Obtido
NOME | TOTAL |
---|---|
Ana Souza | 200.00 |
Bruno Lima | 100.00 |
📌 Tudo parece certo… mas espera aí — por que só tem dois clientes? Cadê a Carla?
4. O Que Está Acontecendo?
Carla (ID 3) não aparece na tabela de pedidos. Como a consulta está usando JOIN
(e não LEFT JOIN
), ela é excluída da análise completamente.
Ou seja:
- A query só considera clientes com pedidos confirmados
- Quem nunca fez pedido ou não tem pedidos com o status esperado fica fora
Como Incluir Todos os Clientes, Mesmo os Sem Pedido Confirmado?
Use LEFT JOIN
e trate os nulos com COALESCE
:
SELECT C.NOME, COALESCE(SUM(P.VALOR_TOTAL), 0) AS TOTAL
FROM cliente C
LEFT JOIN pedido P ON C.ID_CLIENTE = P.ID_CLIENTE AND P.STATUS = 'confirmado'
GROUP BY C.NOME;
Resultado Corrigido
NOME | TOTAL |
---|---|
Ana Souza | 200.00 |
Bruno Lima | 100.00 |
Carla Torres | 0.00 |
Lição Aprendida
- O filtro
WHERE P.STATUS = 'confirmado'
aplicado após o JOIN exclui todos os clientes sem pedidos confirmados. - Quando quiser manter todos os clientes no resultado, filtre diretamente no JOIN (ON) ou use
LEFT JOIN + IS NULL
.
Conclusão
O resultado de uma query nem sempre está errado mas pode estar incompleto. Saber quando usar LEFT JOIN
, como tratar nulos e onde aplicar filtros é essencial para entregar análises confiáveis.
- Preste atenção em quem está sendo excluído da análise
- Releia os filtros com cuidado
- Use
COALESCE
para lidar com ausências
📢 Você já viu um resultado que parecia certo, mas estava incompleto? Compartilha sua história nos comentários! 📚 E se quiser aprender SQL com foco em lógica, raciocínio e casos reais, conheça o curso SQL Simplificado — feito pra quem quer ir além do básico.
Nos vemos no próximo artigo do Blog do SQL! 🚀
0 Comentários