Análisis SQL

CTE o subconsulta: ¿cómo elegir?

Ambos estructuran una consulta; la mejor forma es la que hace que los pasos del negocio sean comprobables.

Equipo de SQL.tn9 min
Una transformación SQL compara pasos sucesivos con una estructura anidada

¿Necesitas nombrar un paso?

Una subconsulta corta es adecuada para un valor de comparación o un resultado utilizado solo una vez. Un CTE visibiliza un paso empresarial y facilita el encadenamiento de varias transformaciones.

Ninguno de los dos por sí solo garantiza un mejor rendimiento. El motor puede optimizarlos de forma diferente; La medición sobre datos reales sigue siendo necesaria.

Los nombres, cantidades y datos utilizados en este artículo son ficticios y creados con fines de aprendizaje.

La consulta explicada

Empieza por definir qué debe representar una fila del resultado. Esta decisión determina las columnas, agrupaciones y controles necesarios.

El siguiente ejemplo aísla el mecanismo principal. Ejecútelo, observe el resultado y luego cambie una cláusula a la vez para comprender su efecto.

Totales y margen separados
WITH totaux AS (
  SELECT SUM(chiffre_affaires) AS ca, SUM(couts) AS couts
  FROM ventes_mensuelles
)
SELECT ca, couts, ca - couts AS marge
FROM totaux;

Lea el resultado como un analista.

Los totales CTE corresponden a un paso con nombre. La consulta final sigue centrada en el indicador entregado.

Durante la construcción, ejecuta el contenido de cada CTE por separado para verificar su nivel de detalle y totales.

  • Nombra la responsabilidad del paso.
  • Consulta el nivel intermedio de detalle.
  • Evita el CTE decorativo.
  • Observe el plan en consultas costosas.

Errores que distorsionan el análisis

Una consulta puede ser válida sin responder correctamente a la pregunta. Los errores más costosos suelen ser silenciosos: perímetro incorrecto, línea multiplicada o valor faltante interpretado como cero.

Antes de compartir el resultado, compárelo con una pequeña muestra calculada manualmente y mantén la definición del alcance con la consulta.

  • Corta cada línea en un CTE.
  • Supongamos que un CTE siempre acelera.
  • Reutilizar un alias en el nivel incorrecto.
  • Ocultar un join complejo sin controlar su resultado.

Ponte en practica

Crea el ejercicio de margen global con un CTE, luego escribe una versión de subconsulta y compara la legibilidad.

El simulador SQL de SQL.tn solo ejecuta consultas de lectura sobre datos ficticios en su navegador. Puede probar varias escrituras y comparar sus resultados sin instalar ningún software.

Pon esta guía en práctica.

Abre el ejercicio relacionado, ejecuta tu consulta y compara el resultado esperado.

Empezar el ejercicio