Repaso
English
Bases de datos y SQLIntermedioDB-45

¿Para qué sirve una CTE (cláusula WITH)?

Opciones

  1. Crear tablas físicas en el disco del servidor de base de datos
  2. Dar nombre a una subconsulta para leer una consulta compleja paso a paso (Opción correcta)
  3. Cifrar los datos que devuelve la consulta
  4. 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.

Términos clave

Practica esta pregunta en Repaso