SQL simplificado: criando consultas modulares e compreensíveis com CTEs - KDnuggets

SQL simplificado: criando consultas modulares e compreensíveis com CTEs – KDnuggets

Nó Fonte: 3084928

SQL simplificado: criando consultas modulares e compreensíveis com CTEs
Imagem do autor 
 

No mundo dos dados, o SQL ainda é a língua franca para interagir com bancos de dados. 

Ainda hoje é uma das linguagens mais utilizadas para lidar com dados e ainda é considerada obrigatória para qualquer bom profissional de dados. 

No entanto, qualquer pessoa que tenha trabalhado com consultas SQL complexas sabe que elas podem rapidamente se transformar em feras pesadas – difíceis de ler, manter ou reutilizar. 

É por isso que hoje não basta saber SQL, precisamos ser bons em elaborar consultas. E isso é na verdade um tipo de arte. 

É aqui que as Common Table Expressions (CTEs) entram em ação, transformando a arte de escrever consultas em uma arte mais estruturada e acessível.

Então, vamos descobrir juntos como codificar consultas legíveis e reutilizáveis.

Se você está se perguntando o que é um CTE, você está no artigo certo. 

Uma Expressão de Tabela Comum (CTE) é um conjunto de resultados temporário definido no escopo de execução de uma única instrução SQL. 

 

São tabelas temporais que podem ser referenciadas muitas vezes em uma única consulta e normalmente são usadas para simplificar junções e subconsultas complexas, com o objetivo final de aumentar a legibilidade e a organização do código SQL.

Portanto, eles são uma ferramenta poderosa para dividir consultas complexas em partes mais simples.

Veja por que você deve considerar o uso de CTEs:

  • Modularidade: Você pode dividir a lógica complexa em partes legíveis.
  • Legibilidade: Facilita a compreensão do fluxo de consultas SQL.
  • Reutilização: Os CTEs podem ser referenciados diversas vezes em uma única consulta, evitando repetições.

A mágica começa com a cláusula WITH, que precede sua consulta principal e define diferentes tabelas temporais (CTEs) com aliases.

Portanto, sempre precisamos iniciar nossa consulta com o comando “WITH” para começar a definir nossos próprios CTEs. Ao usar CTEs, podemos dividir qualquer consulta SQL complexa em: 

– Pequenas tabelas temporais que calculam variáveis ​​relacionadas. 

– Uma tabela final que leva apenas as variáveis ​​que queremos como saída.

E esta é precisamente a abordagem MODULAR que queremos em qualquer código!

 

SQL simplificado: criando consultas modulares e compreensíveis com CTEs
Imagem do autor
 

Portanto, usar CTEs em nossas consultas nos permite:

– Execute uma tabela temporal UMA VEZ e faça referência a ela MÚLTIPLAS vezes.

– Melhore a legibilidade e simplifique a lógica complexa.

– Promova a reutilização de código e o design modular.

Para entender melhor isso, podemos dar um exemplo prático de anúncios do Airbnb em Barcelona. 

Imagine que queremos analisar o desempenho dos anúncios por bairro e compará-lo com o desempenho geral da cidade. Você precisaria reunir informações sobre bairros, apartamentos individuais, anfitriões e preços.

Para exemplificar isso, usaremos o Por dentro do Airbnb tabela de Barcelona, ​​que se parece com isto: 

 

SQL simplificado: criando consultas modulares e compreensíveis com CTEs
 

Uma abordagem ingênua pode levar você a criar subconsultas aninhadas que rapidamente se tornam um pesadelo de manutenção como a seguinte:

Código por Autor

Em vez disso, podemos utilizar CTEs para compartimentar nossa consulta em seções lógicas – cada uma definindo uma peça do quebra-cabeça.

  • Dados do bairro: Crie um CTE para resumir os dados por bairro.
  • Informações sobre apartamento e anfitrião: Defina CTEs para obter detalhes sobre apartamentos e anfitriões.
  • Métricas em toda a cidade: Outro CTE para reunir estatísticas em nível de cidade para comparação.
  • Assembléia final: Combine os CTEs em uma instrução SELECT final para apresentar os dados de forma coesa.

 

SQL simplificado: criando consultas modulares e compreensíveis com CTEs
Imagem do autor
 

E terminaríamos com a seguinte consulta:

Código por Autor

Ao usar CTEs, transformamos uma consulta única potencialmente monstruosa em um conjunto organizado de módulos de dados. Esta abordagem modular torna o código SQL mais intuitivo e adaptável às mudanças. 

Se surgirem novos requisitos, você poderá ajustar ou adicionar CTEs sem revisar toda a consulta.

Depois de estabelecer seus CTEs, você poderá reutilizá-los para realizar análises comparativas. Por exemplo, se quiser comparar dados de bairro com métricas de toda a cidade, você pode referenciar seus CTEs em uma série de operações JOIN. 

Isto não só economiza tempo, mas também mantém seu código eficiente, já que você não terá que repetir a mesma consulta duas vezes!

Os CTEs são uma prova do princípio de que um pouco de estrutura ajuda muito na programação. Ao adotar CTEs, você pode escrever consultas SQL mais claras, mais fáceis de manter e reutilizáveis. 

Ele agiliza o processo de desenvolvimento de consultas e facilita a comunicação de lógica complexa de recuperação de dados a outras pessoas.

Lembre-se, da próxima vez que você estiver prestes a começar a escrever um monstro de subconsulta aninhada e com múltiplas junções, considere dividi-lo com CTEs. 

Seu eu futuro – e qualquer outra pessoa que possa ler seu código – agradecerá.
 
 

Joseph Ferrer é um engenheiro analítico de Barcelona. Formou-se em engenharia física e atualmente trabalha na área de Data Science aplicada à mobilidade humana. Ele é um criador de conteúdo em tempo parcial focado em ciência e tecnologia de dados. Você pode contatá-lo em LinkedIn, Twitter or Médio.

Carimbo de hora:

Mais de KDnuggetsGenericName