SQL simplificado: creación de consultas modulares y comprensibles con CTE - KDnuggets

SQL simplificado: creación de consultas modulares y comprensibles con CTE – KDnuggets

Nodo de origen: 3084928

SQL simplificado: elaboración de consultas modulares y comprensibles con CTE
Imagen del autor 
 

En el mundo de los datos, SQL sigue siendo la lengua franca para interactuar con bases de datos. 

Aún hoy se mantiene como uno de los lenguajes más utilizados para manejar datos y todavía se considera imprescindible para cualquier buen profesional de datos. 

Sin embargo, cualquiera que haya trabajado con consultas SQL complejas sabe que pueden convertirse rápidamente en bestias difíciles de manejar, difíciles de leer, mantener o reutilizar. 

Es por eso que hoy en día no basta con saber SQL, debemos ser buenos elaborando consultas. Y esto es en realidad un tipo de arte. 

Aquí es donde entran en juego las expresiones de tabla comunes (CTE), que transforman el arte de escribir consultas en un arte más estructurado y accesible.

Entonces, descubramos juntos cómo codificar consultas legibles y reutilizables.

Si te preguntas qué es un CTE, estás en el artículo correcto. 

Una expresión de tabla común (CTE) es un conjunto de resultados temporal que se define dentro del alcance de ejecución de una única declaración SQL. 

 

Son tablas temporales a las que se puede hacer referencia muchas veces dentro de una sola consulta y normalmente se utilizan para simplificar uniones y subconsultas complejas, con el objetivo final de aumentar la legibilidad y la organización del código SQL.

Por lo tanto, son una herramienta poderosa para dividir consultas complejas en partes más simples.

He aquí por qué debería considerar el uso de CTE:

  • Modularidad: Puede dividir la lógica compleja en partes legibles.
  • Legibilidad: Facilita la comprensión del flujo de consultas SQL.
  • Reutilización: Se puede hacer referencia a los CTE varias veces en una sola consulta, evitando repeticiones.

La magia comienza con la cláusula CON, que precede a la consulta principal y define diferentes tablas temporales (CTE) con alias.

Por lo tanto, siempre debemos comenzar nuestra consulta con el comando "CON" para comenzar a definir nuestros propios CTE. Al utilizar CTE, podemos dividir cualquier consulta SQL compleja en: 

– Pequeñas tablas temporales que calculan variables relacionadas. 

– Una tabla final que solo toma aquellas variables que queremos como salida.

¡Y este es precisamente el enfoque MODULAR que queremos en cualquier código!

 

SQL simplificado: elaboración de consultas modulares y comprensibles con CTE
Imagen del autor
 

Entonces, usar CTE en nuestras consultas nos permite:

– Ejecute una tabla temporal UNA VEZ y haga referencia a ella MÚLTIPLES veces.

– Mejorar la legibilidad y simplificar la lógica compleja.

– Promover la reutilización del código y el diseño modular.

Para entender esto mejor, podemos poner un ejemplo práctico de los anuncios de Airbnb en Barcelona. 

Imaginemos que queremos analizar el desempeño de los listados por vecindario y compararlo con el desempeño general de la ciudad. Necesitaría reunir información sobre vecindarios, apartamentos individuales, anfitriones y precios.

Para ejemplificar esto usaremos el InteriorAirbnb tabla de Barcelona, ​​que tiene el siguiente aspecto: 

 

SQL simplificado: elaboración de consultas modulares y comprensibles con CTE
 

Un enfoque ingenuo podría llevarle a crear subconsultas anidadas que rápidamente se convierten en una pesadilla de mantenimiento como la siguiente:

Código por autor

En su lugar, podemos utilizar CTE para compartimentar nuestra consulta en secciones lógicas, cada una de las cuales define una pieza del rompecabezas.

  • Datos del barrio: Cree un CTE para resumir datos por vecindario.
  • Información sobre el apartamento y el anfitrión: Defina CTE para obtener detalles sobre apartamentos y anfitriones.
  • Métricas de toda la ciudad: Otro CTE para recopilar estadísticas a nivel de ciudad para comparar.
  • Montaje final: Combine los CTE en una declaración SELECT final para presentar los datos de manera coherente.

 

SQL simplificado: elaboración de consultas modulares y comprensibles con CTE
Imagen del autor
 

Y terminaríamos con la siguiente consulta:

Código por autor

Al utilizar CTE, convertimos una consulta única potencialmente monstruosa en un conjunto organizado de módulos de datos. Este enfoque modular hace que el código SQL sea más intuitivo y adaptable a los cambios. 

Si surgen nuevos requisitos, puede ajustar o agregar CTE sin necesidad de revisar toda la consulta.

Una vez que haya establecido sus CTE, puede reutilizarlos para realizar análisis comparativos. Por ejemplo, si desea comparar datos de vecindario con métricas de toda la ciudad, puede hacer referencia a sus CTE en una serie de operaciones JOIN. 

Esto no sólo ahorra tiempo sino que también mantiene su código eficiente, ya que no tendrá que repetir la misma consulta dos veces.

Los CTE son un testimonio del principio de que una pequeña estructura ayuda mucho en la programación. Al adoptar CTE, puede escribir consultas SQL más claras, más fáciles de mantener y reutilizables. 

Agiliza el proceso de desarrollo de consultas y facilita la comunicación de una lógica de recuperación de datos compleja a otros.

Recuerde, la próxima vez que esté a punto de embarcarse en la escritura de un monstruo de subconsultas anidadas y de múltiples uniones, considere dividirlo con CTE. 

Tu yo futuro (y cualquier otra persona que pueda leer tu código) te lo agradecerá.
 
 

Josep Ferrer es un ingeniero analítico de Barcelona. Se graduó en ingeniería física y actualmente trabaja en el campo de la Ciencia de Datos aplicada a la movilidad humana. Es un creador de contenido a tiempo parcial centrado en la ciencia y la tecnología de datos. Puedes contactarlo en Etiqueta LinkedIn, Twitter or Mediana.

Sello de tiempo:

Mas de nuggets