
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 oNOME
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
comHAVING
para filtrar agregações - É mais performática em bases grandes
Explicando a Nova Lógica
JOIN
conecta clientes com seus pedidosWHERE
filtra apenas os pedidos confirmadosGROUP BY
organiza os dados por clienteHAVING 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
eGROUP 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