¿Para qué sirve una CTE (cláusula WITH)?
Opciones
- Crear tablas físicas en el disco del servidor de base de datos
- Dar nombre a una subconsulta para leer una consulta compleja paso a paso (Opción correcta)
- Cifrar los datos que devuelve la consulta
- Acelerar automáticamente todas las consultas de la base de datos
Respuesta
Dar nombre a una subconsulta para que una consulta compleja se lea paso a paso (y permitir recursión)
Por qué
Una Common Table Expression da un nombre temporal a una consulta dentro de una sentencia. Hace legibles las consultas largas: defines el paso 1 y el paso 2 como bloques con nombre y luego los combinas.
Ejemplo: primero calcula los totales por cliente y luego selecciona los mayores.
WITH RECURSIVE puede recorrer jerarquías como un árbol empleado-jefe.
WITH totals AS (
SELECT customer_id, SUM(amount) AS total
FROM orders
GROUP BY customer_id
)
SELECT c.name, t.total
FROM totals t
JOIN customers c ON c.id = t.customer_id
WHERE t.total > 1000;Recuerda
CTE = subconsulta con nombre para consultas legibles.