Usando CTE no SQL para criar Consultas Mais Organizadas e Eficientes
Você sabe o que é uma CTE no SQL? Sabe como utilizá-la? Aprenda a deixar suas consultas mais organizadas e poderosas com essa funcionalidade incrível!
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!
O que você aprende neste vídeo
Resposta rápida: Nesta aula, o instrutor ensina o CTE (Common Table Expression) no SQL/MySQL, uma tabela virtual e temporária criada com WITH ... AS. Ele mostra as vantagens (mais legibilidade, evita repetir consultas e facilita consultas complexas), a diferença para uma View (o CTE só existe durante a execução) e resolve um caso real de segmentar clientes.
Neste vídeo (17 min):
- 1:00 - O que é o CTE e as vantagens: uma tabela virtual e temporária (
WITH nome AS (...)) que melhora a legibilidade, evita repetir consultas e facilita consultas complexas. - 3:00 - CTE x View: o CTE só existe durante a execução da consulta; a View fica armazenada no banco.
- 4:00 - O caso real: o marketing precisa dos clientes do ensino médio para campanhas de graduação.
- 7:00 - Quebrar o problema em partes: reconhecer a tabela (
SELECT *) e as colunas antes de filtrar. - 13:00 - Criar a CTE e usá-la:
WITH clientes_em AS (SELECT ... WHERE escolaridade = 'ensino médio'), depois filtrar por renda ou por filhos.
Não vamos te encaminhar nenhum tipo de SPAM! A Hashtag Treinamentos é uma empresa preocupada com a proteção de seus dados e realiza o tratamento de acordo com a Lei Geral de Proteção de Dados (Lei n. 13.709/18). Qualquer dúvida, nos contate.
O que você vai aprender hoje?
Usando CTE no SQL para criar Consultas Mais Organizadas e Eficientes
As Common Table Expressions (CTEs) são uma poderosa ferramenta do SQL para estruturar consultas complexas de forma clara, organizada e eficiente.
Nesta aula, veremos o conceito, as vantagens, a sintaxe e um caso prático de uso das CTEs no SQL.
Assim, você estará preparado para criar consultas mais eficientes, otimizando seu tempo e trabalho.
Uma CTE (Common Table Expression) no SQL é um resultado temporário e nomeado, criado com a cláusula WITH, que você usa logo em seguida na mesma consulta. Ela deixa o código mais organizado e legível, substitui subconsultas aninhadas e permite reaproveitar o mesmo trecho — inclusive de forma recursiva — sem precisar criar uma view ou tabela permanente no banco.
O Que é uma CTE?
CTE, ou Common Table Expression, é uma tabela virtual e temporária usada para organizar consultas SQL.
Ela existe somente durante a execução de um comando e é útil para simplificar consultas complexas, reduzir duplicações e melhorar a legibilidade do código.
Geralmente, utilizamos as CTEs em consultas que empregam os mesmos cálculos ou filtros repetidamente. Isso ajuda a otimizar o código para um desempenho melhor.
As Common Table Expressions podem ser referenciadas dentro de consultas maiores e oferecem várias vantagens:
- Legibilidade: Deixa o código mais limpo e fácil de entender.
- Reutilização: Evita a repetição de subconsultas.
- Eficiência: Torna mais simples trabalhar com consultas complexas, como subconsultas ou filtros múltiplos.
Sintaxe Básica de uma CTE no SQL
A criação de uma CTE começa com a palavra-chave WITH, seguida pelo nome da CTE e pela consulta. Veja um exemplo:
WITH nome_da_cte AS (
SELECT coluna1, coluna2
FROM tabela
WHERE condição
)
SELECT *
FROM nome_da_cte;Diferenças Entre CTEs e Views
A principal diferença entre uma CTE e uma View está na sua duração e validade. As CTEs são temporárias e válidas somente durante a execução da consulta. Já as Views são permanentes e armazenadas no banco de dados.
Exemplo Prático – Segmentação de Clientes
Para fixar melhor o conceito e entender a aplicação de uma CTE no SQL, vamos ver um exemplo prático no MySQL. O cenário envolve a segmentação de clientes de uma empresa de cursos.
Cenário: “O setor de Marketing precisa, de forma recorrente, saber quais clientes estão no Ensino Médio para direcionar campanhas de graduação específicas.
Essas campanhas podem variar de acordo com o valor daquela graduação ou com fatores como a existência de filhos.
Uma coisa é certa: o Marketing sempre precisará da base de clientes com escolaridade de Ensino Médio.”
Objetivos:
- Identificar clientes com renda anual igual ou superior a 30.000.
- Identificar clientes que possuem filhos.
Em vez de repetir os mesmos filtros várias vezes, usaremos uma CTE para simplificar e reutilizar os resultados.
Visualizando o Banco de Dados
Antes de criar a CTE, o primeiro passo será sempre entender as informações disponíveis no banco de dados com o qual você está trabalhando. Para isso, executaremos um comando SELECT para visualizar os dados da tabela.
SELECT *
FROM Clientes;
Dentro dessa tabela, encontramos diversas informações, como: ID do cliente, nome, sobrenome, data de nascimento, estado civil, gênero, e-mail, telefone, renda anual, quantidade de filhos e escolaridade.
De acordo com o cenário deste exemplo, podemos identificar os principais campos relevantes:
- Escolaridade: Indica o nível de formação do cliente.
- Renda Anual: Informações financeiras para campanhas direcionadas.
- Quantidade de Filhos: Útil para estratégias baseadas em disponibilidade.
Criando a Primeira CTE
Após essa análise inicial do banco de dados, podemos criar a primeira CTE com os clientes que possuem escolaridade de ensino médio. Essa será a base para futuras segmentações.
Usamos o comando WITH para nomear a CTE como clientes_em. Em seguida, selecionamos todos os clientes cujo campo Escolaridade seja igual a “Ensino Médio”.
WITH clientes_em AS (
SELECT *
FROM clientes
WHERE Escolaridade = 'Ensino Médio'
)
SELECT *
FROM clientes_em;Ao executar essa consulta, filtraremos apenas os clientes da tabela que correspondem ao nível de escolaridade solicitado pela equipe de marketing.

Filtrando Clientes com Renda Superar a 30.000
Com a base de clientes de ensino médio criada, agora podemos filtrar apenas aqueles com renda igual ou superior a 30.000.
SELECT *
FROM clientes_em
WHERE Renda_Anual >= 30000;Essa consulta buscará apenas os clientes com renda igual ou maior que 30 mil, contidos dentro da nossa CTE.

Segmentando Clientes com Filhos
Outra segmentação importante para resolver o nosso desafio é encontrar clientes que têm filhos.
Para isso, basta realizar uma consulta semelhante à anterior, filtrando os resultados da CTE pela coluna Qtd_Filhos.
SELECT *
FROM clientes_em
WHERE Qtd_Filhos >= 1;Executando essa consulta, obteremos apenas os clientes que possuem ensino médio e pelo menos um filho.

A partir dessas análises, você poderá auxiliar a equipe de marketing a direcionar campanhas de forma mais eficaz, ajustando estratégias de acordo com a renda e a disponibilidade dos clientes.
Evitando Erros Comuns
- Erro ao Referenciar a Tabela Base: Certifique-se de usar a CTE criada, e não a tabela original, ao realizar consultas posteriores.
- Atualização Temporária: Lembre-se de que as CTEs só existem durante a execução da consulta.
Trabalhando Com Várias Segmentações
Você pode expandir ainda mais o poder das CTEs ao combinar múltiplas condições para análise.
WITH clientes_em AS (
SELECT *
FROM clientes
WHERE Escolaridade = 'Ensino Médio'
)
SELECT *
FROM clientes_em
WHERE Renda_Anual >= 30000 AND Qtd_Filhos >= 1;Com essa consulta, por exemplo, você pode verificar quais clientes atendem a ambos os requisitos solicitados pela equipe de marketing. Isso abre novas possibilidades para campanhas direcionadas e análises específicas.
Perguntas frequentes sobre CTE no SQL
1. O que é uma CTE no SQL?
É uma tabela temporária nomeada, definida com WITH antes do SELECT principal. Existe apenas durante a execução da consulta e serve para dividir uma query complexa em partes legíveis, melhorando a organização e a manutenção sem gravar nada no banco.
2. Qual a diferença entre CTE e subconsulta?
As duas geram resultados intermediários, mas a CTE fica no topo (WITH), com nome, e pode ser referenciada várias vezes na mesma consulta, ficando bem mais legível. A subconsulta fica embutida e aninhada, o que dificulta a leitura quando a lógica cresce.
3. Qual a diferença entre CTE e View?
A CTE existe só durante aquela consulta; a View é um objeto salvo no banco, reutilizável por várias queries. Use CTE para organizar uma consulta pontual e View quando precisar do mesmo resultado de forma recorrente em vários lugares.
4. Como criar uma CTE passo a passo?
Comece com WITH nome_cte AS (escreva o SELECT que monta o resultado) e, logo depois, faça o SELECT principal usando esse nome como se fosse uma tabela. Você pode encadear várias CTEs separando-as por vírgula.
Conclusão – CTE no SQL
A CTE no SQL é uma ferramenta essencial para analistas de dados e desenvolvedores. O uso das Common Table Expressions simplifica a organização das consultas e aumenta sua eficiência, tornando-as mais legíveis e reutilizáveis.
Ao dominar as CTEs, você pode criar soluções avançadas para problemas cotidianos no gerenciamento de bancos de dados no trabalho. Experimente aplicá-las em seus projetos e veja como elas podem transformar a forma como você trabalha com dados.
Hashtag Treinamentos
Para acessar outras publicações de SQL, clique aqui!
Posts mais recentes de SQL
- UPDATE em SQL: guia completo para usar o comando sem cometer errosUPDATE em SQL: entenda como atualizar dados com segurança, sintaxe, exemplos práticos e cuidados para evitar erros comuns.
- SQL DELETE: como usar o comando para excluir dados?SQL DELETE: entenda como excluir registros, usar a sintaxe correta e evitar erros ao remover dados de tabelas em bancos SQL.
- Guia completo para desenvolvedor SQL: o que faz, salário e como aprenderConheça as funções do desenvolvedor SQL, salários médios, como começar na área e como está o atual mercado de trabalho.
Posts mais recentes da Hashtag Treinamentos
- Planilha de Controle de Notas Fiscais no Excel [Grátis]Baixe a planilha de controle de notas fiscais no Excel grátis: calcule ISS e retenções, veja o que está em aberto e gere a cobrança de cada nota de serviço.
- Qual IA usar na empresa: ChatGPT, Claude ou Perplexity?Qual IA usar na empresa: veja as diferenças entre ChatGPT, Claude e Perplexity e quando cada um rende mais em cada área da sua equipe.
- Apostilas Gratuitas em PDF: Excel, Power BI, Python e IABaixe apostilas gratuitas em PDF de Excel, Power BI, Python, Claude e agentes de IA, com exercícios e gabarito. Escolha a sua e comece hoje.








