Deixa eu te propor um desafio simples e muito revelador.

Olha para a query abaixo sem rodar, sem testar e sem “imaginar o resultado no chute”.

SELECT
c.ID_CLIENTE,
COUNT(p.ID_PEDIDO) AS TOTAL_PEDIDOS
FROM cliente c
LEFT JOIN pedido p
ON p.ID_CLIENTE = c.ID_CLIENTE
WHERE p.DATA_PEDIDO >= '2024-01-01'
GROUP BY c.ID_CLIENTE;

Agora a pergunta é direta:

O que exatamente essa query retorna?

Antes de seguir, vale a pena parar alguns segundos e tentar responder mentalmente.


A maioria das pessoas responde rápido… e responde errado

As respostas mais comuns costumam ser algo como:

  • “Lista clientes com pedidos em 2024”
  • “Conta quantos pedidos cada cliente fez”
  • “Mostra clientes e total de pedidos do ano”

Essas respostas parecem corretas, mas são vagas demais.

E em SQL, resposta vaga costuma esconder erro.


Vamos pensar com calma (sem SQL ainda)

Antes de falar de SELECT, JOIN ou GROUP BY, vamos raciocinar em português.

A intenção parece ser:

  • listar clientes
  • contar pedidos
  • considerar apenas pedidos a partir de 2024

Até aqui, ok.

Agora vem a parte importante:

👉 O que acontece com clientes que NÃO têm pedidos em 2024?

Eles aparecem? Somem? Aparecem com zero?

Essa é a parte que separa quem lê código de quem entende query.


O detalhe que muda tudo está no WHERE

Repara nisso:

LEFT JOIN pedido p
ON p.ID_CLIENTE = c.ID_CLIENTE
WHERE p.DATA_PEDIDO >= '2024-01-01'

Aqui acontece algo sutil e muito comum.

Apesar do LEFT JOIN, o WHERE filtra a tabela de pedidos.

Na prática, isso faz com que:

  • clientes sem pedidos em 2024
  • tenham p.DATA_PEDIDO = NULL
  • e sejam eliminados pelo WHERE

Ou seja:

👉 Essa query NÃO retorna todos os clientes.

👉 Ela retorna apenas clientes que têm pelo menos um pedido em 2024.

O LEFT JOIN perdeu o efeito.


O que essa query realmente faz

Agora sim, com clareza:

Ela retorna o total de pedidos feitos em 2024 para cada cliente que teve pelo menos um pedido nesse período.

Clientes sem pedidos em 2024:

❌ não aparecem
❌ não aparecem com zero
❌ simplesmente somem


Por que esse tipo de erro é tão comum?

Porque muita gente:

  • lê SQL como se fosse texto
  • reconhece comandos
  • mas não simula o efeito lógico da query

A pessoa pensa:

“Usei LEFT JOIN, então todos os clientes entram.”

Mas não verifica se o resto da query mantém essa intenção.


Ler SQL é prever o resultado — não reconhecer sintaxe

Esse tipo de desafio mostra algo importante:

👉 Saber SQL não é saber escrever.

👉 É saber prever o que vai acontecer antes de rodar.

No trabalho real, isso é essencial porque:

  • você evita bugs silenciosos
  • não confia só no “rodou”
  • entende quando o resultado não faz sentido

Como evitar esse tipo de erro no dia a dia

Antes de rodar qualquer query, tente responder mentalmente:

  • Quem entra nessa query?
  • Quem fica de fora?
  • O que acontece com valores nulos?
  • O resultado bate com a pergunta original?

Se você não consegue responder isso com clareza, o SQL ainda não está claro.


Esse tipo de raciocínio não vem de exercício mecânico

Você não desenvolve essa leitura resolvendo lista de:

  • “faça um SELECT”
  • “use GROUP BY”
  • “aplique um WHERE”

Isso vem de:

  • parar
  • ler a query com calma
  • pensar no efeito lógico
  • relacionar código com resultado

O próximo passo certo

Se você quer desenvolver essa habilidade de ler, prever e justificar queries, o caminho não é decorar mais regra — é organizar o raciocínio antes do código.

É exatamente isso que eu organizo no Guia SQL 3C + 12 Consultas Essenciais.

Ele te ajuda a:

  • pensar antes de escrever
  • evitar erros silenciosos
  • ganhar confiança no que você entrega

👉 Você pode baixar o guia aqui:📘 Guia SQL 3C + 12 Consultas Essenciais

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.