Resolve BI

CTE ou subquery?

Intermediário6 min

O problema

A consulta ficou longa e difícil de ler.

Como funciona

CTE nomeia etapas da consulta e permite reuso e leitura em sequência. Subquery serve bem para filtros pontuais.

Exemplo

SQL
WITH vendas_mes AS (
    SELECT cliente_id, SUM(valor) AS total
    FROM vendas
    WHERE data >= DATE '2026-01-01'
    GROUP BY cliente_id
)
SELECT c.nome, v.total
FROM vendas_mes v
JOIN clientes c ON c.id = v.cliente_id
ORDER BY v.total DESC;

Resultado

Consulta legível, com cada etapa isolada e testável.

Quando usar

  • Transformações em várias etapas
  • Consultas que a equipe vai manter

Quando evitar

  • Quando a CTE é recalculada e prejudica performance em bases grandes

Resolve Melhor

Nomeie CTEs pelo que elas contêm, não por etapa (vendas_mes é melhor que passo1).

Dúvidas relacionadas