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:
- Definir la CTE: Calcular las ventas totales por producto con una etiqueta clara.
- 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
¿Listo para practicar Common Table Expressions?
Responde preguntas reales, recibe feedback al instante y sube tu puntaje de habilidad — gratis.
Prueba una 👇
↑ Anda, elige una respuesta. Esto es Skillpato.
Sigue aprendiendo
- SQL JoinsPrueba de SQL Joins para entrevistas: errores comunes y mejores prácticas
- SQL Window FunctionsPrueba de funciones de ventana en SQL para entrevistas: errores comunes a evitar
- SQLSQL DELETE vs. Consulta con COUNT: Errores Comunes en Entrevistas
- ExcelPrueba de Excel para entrevista: las fórmulas que te preguntarán