
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
COALESCEpara 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