Analista de Datos: pregunta de entrevista
¿Cuándo usas una CTE de SQL?
Usa una CTE para nombrar un paso lógico, expresar recursión o hacer legibles transformaciones. Es sobre todo estructura de consulta; si se materializa o mejora rendimiento depende del motor y del plan.
Respuesta directa
Qué debe cubrir una buena respuesta
Cómo funciona
Una expresión de tabla común da nombre a un resultado intermedio para que una consulta se lea de arriba abajo como una secuencia de pasos en lugar de subconsultas anidadas. Las CTE recursivas recorren jerarquías como organigramas o árboles de lista de materiales. Que el motor materialice o incorpore una CTE depende de la base de datos: PostgreSQL la incorpora por defecto desde la versión 12 salvo que se indique MATERIALIZED, otros motores siempre materializan. Así que una CTE es primero una herramienta de legibilidad y estructura, y su efecto en rendimiento debe comprobarse en el plan y no asumirse.
Ejemplo
Un análisis de churn define active_users, luego churned_users como los del mes anterior que no están en este, y luego une con datos de planes; cada paso es una CTE con nombre que un analista puede ejecutar e inspeccionar por separado. Una CTE recursiva expande un árbol de categorías desde parent_id para producir todos los descendientes de una categoría raíz para un filtro.
Errores frecuentes
- Suponer que una CTE cachea un resultado y referenciarla muchas veces en un motor que la recalcula cada vez.
- Escribir una CTE recursiva sin condición de parada sobre datos cíclicos.
- Usar una CTE para sustituir una vista que necesitan muchas consultas y duplicar la lógica.
Una estructura útil para responder
Responde desde tu propia experiencia.
No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.
Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.