Nem toda query que funciona é uma boa query. Algumas estão corretas, mas são confusas, difíceis de manter ou poderiam ser muito mais diretas.

Neste artigo, você vai analisar uma consulta que funciona, mas é mal escrita, e reescrevê-la com foco em clareza, organização e performance. Esse tipo de desafio é ideal para treinar um olhar mais maduro sobre SQL.


O Desafio: Veja a Query Original

SELECT c.ID_CLIENTE, c.NOME,
   (SELECT COUNT(*) FROM pedido p
    WHERE p.ID_CLIENTE = c.ID_CLIENTE AND P.STATUS = 'confirmado') AS TOTAL_PEDIDOS FROM cliente c 
WHERE 
   (SELECT COUNT(*) FROM pedido p
    WHERE p.ID_CLIENTE = c.ID_CLIENTE AND p.STATUS = 'confirmado') > 0;

O Que Ela Está Fazendo?

  • Mostra o ID e o NOME dos clientes
  • Exibe o total de pedidos confirmados para cada um
  • Filtra apenas os que têm pelo menos 1 pedido confirmado

Funciona, mas é redundante: a subquery é escrita duas vezes, uma no SELECT e outra no WHERE.


Reescrevendo de Forma Mais Clara e Eficiente

SELECT c.ID_CLIENTE, c.NOME, COUNT(p.ID_PEDIDO) AS TOTAL_PEDIDOS
FROM cliente c
JOIN pedido p ON c.ID_CLIENTE = p.ID_CLIENTE
WHERE p.STATUS = 'confirmado'
GROUP BY c.ID_CLIENTE, c.NOME
HAVING COUNT(p.ID_PEDIDO) > 0;

Por Que a Nova Versão é Melhor?

  • Usa JOIN explícito → mais legível
  • Evita subqueries duplicadas
  • Usa GROUP BY com HAVING para filtrar agregações
  • É mais performática em bases grandes

Explicando a Nova Lógica

  • JOIN conecta clientes com seus pedidos
  • WHERE filtra apenas os pedidos confirmados
  • GROUP BY organiza os dados por cliente
  • HAVING COUNT(...) > 0 garante que só apareçam clientes com pelo menos 1 pedido

Quando Subqueries São um Problema?

  • Quando são repetidas desnecessariamente
  • Quando não são reutilizáveis
  • Quando podem ser substituídas por joins com agrupamento

Usar subqueries não é errado mas devemos fazer com propósito.


Conclusão

Reescrever uma query não é só sobre sintaxe, é sobre pensar em legibilidade, eficiência e manutenibilidade.

  • Use JOIN e GROUP BY quando puder consolidar a lógica
  • Evite subqueries repetidas
  • Sempre pergunte: “esse código está claro para outro analista?”

📢 Já reescreveu uma query que estava certa, mas mal feita? Tem alguma dúvida sobre boas práticas? Comenta aqui! 📚 E se quiser aprender SQL com foco em clareza, estrutura e boas práticas, conheça o curso SQL Simplificado — feito pra quem quer escrever código que entrega e convence.

Nos vemos no próximo artigo do Blog do SQL! 🚀

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.