🎉 SEMANA DO CONSUMIDOR

Últimos dias para comprar os cursos com 50% de desconto

Ver detalhes

Postado em em 27 de dezembro de 2024

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!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

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.

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.

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:

  1. Identificar clientes com renda anual igual ou superior a 30.000.
  2. 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;
Visualizando o Banco de Dados

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.

Criando a Primeira CTE

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.

Filtrando Clientes com Renda Superar a 30.000

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.

Segmentando Clientes com Filhos

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.

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!


Quer aprender mais sobre SQL com um minicurso básico gratuito?

Posts mais recentes de SQL

Posts mais recentes da Hashtag Treinamentos

Diego Monutti

Expert em conteúdos da Hashtag Treinamentos. Auxilia na criação de conteúdos de variados temas voltados para aqueles que acompanham nossos canais.