Ejercicios de expresiones de tablas comunes para entrevistas de analista de datos

Dominar las expresiones de tablas comunes es crucial para la claridad en las consultas SQL, especialmente para roles de analista de datos.

Al analizar datos de ventas, muchos analistas se ven en la necesidad de escribir consultas SQL complejas que rápidamente se vuelven difíciles de manejar y mantener. Un escenario común implica calcular las ventas totales por producto y filtrar aquellos con ventas totales por encima de un cierto umbral, como $1000. Sin un uso efectivo de las expresiones de tablas comunes (CTEs), estas consultas pueden volverse engorrosas. Exploremos cómo aprovechar las CTEs para simplificar tus ejercicios de SQL y evitar errores comunes durante las entrevistas y aplicaciones en el mundo real.

¿Por qué elegir expresiones de tablas comunes?

Las CTEs son una característica poderosa en SQL que te permite descomponer consultas complejas en partes más manejables, mejorando tanto la legibilidad como la mantenibilidad. Te permiten definir conjuntos de resultados temporales que pueden ser referenciados dentro de una instrucción SELECT, INSERT, UPDATE o DELETE. Este enfoque modular reduce el riesgo de errores y aclara tu lógica, aspectos que los entrevistadores a menudo buscan al evaluar la comprensión de un candidato durante las pruebas.

Datos de ejemplo

Considera la siguiente tabla ventas que contiene datos de ventas:

sales_id product_id amount
1 A 300
2 B 800
3 A 600
4 C 200
5 B 700

Tarea: Calcular las ventas totales por producto

Se te pide calcular las ventas totales por producto y filtrar los productos con ventas totales que superen los $1000. Sin usar una CTE, esta tarea podría transformarse en una consulta anidada compleja que es difícil de descifrar.

Consulta sin CTE:

SELECT product_id, SUM(amount) AS total_sales
FROM sales
GROUP BY product_id
HAVING SUM(amount) > 1000;

Aunque esta es una consulta sencilla, imagina que necesitas unir otras tablas o incorporar filtros adicionales. La complejidad crece, haciendo que sea más difícil de mantener.

Usando una CTE para mayor claridad

Ahora, veamos cómo usar una CTE puede mejorar la claridad:

WITH TotalSales AS (
    SELECT product_id, SUM(amount) AS total_sales
    FROM sales
    GROUP BY product_id
) 
SELECT product_id, total_sales
FROM TotalSales
WHERE total_sales > 1000;

En este ejemplo revisado, la CTE TotalSales captura la lógica para calcular las ventas totales, haciendo que la consulta subsiguiente sea más limpia y clara.

Trampas comunes en entrevistas

A medida que te preparas para entrevistas centradas en CTEs, ten en cuenta las siguientes trampas comunes:

  • Sobrecargando las consultas: Los candidatos a menudo intentan hacer demasiado en una sola consulta. Descompón tu lógica en CTEs; a los entrevistadores les gusta el código limpio y modular.
  • Ignorando la legibilidad: No usar CTEs puede conducir a una sintaxis compleja que es difícil para otros (y para ti mismo) de entender más tarde. Siempre piensa en cómo otra persona leería tu código.
  • Malentendiendo el alcance: Recuerda que las CTEs están limitadas a la instrucción que las sigue. Si intentas referenciar una CTE fuera de su consulta definida, tendrás problemas.
  • No considerando el rendimiento: Si bien las CTEs mejoran la legibilidad, a veces pueden llevar a problemas de rendimiento según el motor de la base de datos. Esté preparado para discutir cuándo es más apropiado usar una subconsulta.

Ejemplo práctico

Razona a través de un escenario práctico de entrevista: Te han proporcionado la misma tabla ventas y se te pide identificar qué productos tienen ventas totales que exceden $1000. En tu proceso de pensamiento inicial usando una consulta anidada, podrías haber terminado con:

SELECT product_id, total_sales
FROM (SELECT product_id, SUM(amount) AS total_sales
      FROM sales
      GROUP BY product_id) AS SalesSummary
WHERE total_sales > 1000;

Aunque esto produce los resultados correctos, pasemos a un enfoque basado en CTE para mejorar:

  1. Definir la CTE: Calcular las ventas totales por producto con una etiqueta clara.
  2. Seleccionar de la CTE: Obtener resultados, aplicando tu filtro final.

El SQL correspondiente sería:

WITH SalesSummary AS (
    SELECT product_id, SUM(amount) AS total_sales
    FROM sales
    GROUP BY product_id
)
SELECT product_id, total_sales
FROM SalesSummary
WHERE total_sales > 1000;

Esta estructura limpia reduce la carga cognitiva y se alinea con las mejores prácticas esperadas en roles analíticos.

En el trabajo: Casos de uso comunes

Las CTEs son invaluables para los analistas de datos a diario. Con frecuencia tratarás con:

  • Datos jerárquicos: Usar CTEs recursivas para analizar relaciones jerárquicas, como estructuras organizativas o categorías de productos.
  • Transformaciones de datos: Simplificar la manipulación de datos rompiéndola en pasos lógicos, facilitando su depuración y mantenimiento.
  • Optimización del rendimiento: En casos donde necesites referenciar agregaciones complejas múltiples veces en un informe, usar una CTE puede optimizar el rendimiento en lugar de recalcular las mismas agregaciones.

En producción, la claridad y la mantenibilidad no son solo aspectos deseables; son esenciales. Las decisiones que tomes sobre la estructura de las consultas pueden afectar todo, desde la colaboración con compañeros de equipo hasta el rendimiento de los informes.

Referencias

Practica

¿Listo para practicar Common Table Expressions?

Responde preguntas reales, recibe feedback al instante y sube tu puntaje de habilidad — gratis.

Prueba una 👇

Common Table ExpressionsIntermedio
0 XP
Tienes una tabla de ventas con `sales_id`, `product_id` y `amount`. Quieres calcular las ventas totales por producto y encontrar los productos con ventas mayores a $1000.¿Qué enfoque deberías usar para simplificar primero la consulta?

↑ Anda, elige una respuesta. Esto es Skillpato.

Sigue aprendiendo