CTE recursiva en SQL
Una CTE recursiva recorre una jerarquía o genera una secuencia.
WITH RECURSIVE reports AS (
SELECT
id,
name,
0 AS depth
FROM employees
WHERE manager_id IS NULL
UNION ALL
SELECT
e.id,
e.name,
r.depth + 1
FROM employees AS e
JOIN reports AS r
ON e.manager_id = r.id
WHERE r.depth < 5
)
SELECT *
FROM reports;
Cómo funciona
- La primera rama es la fila semilla; la segunda, el paso.
UNION ALLune la semilla con cada nueva generación.- Una columna de profundidad y un tope mantienen finita la recursión.
Palabras clave y builtins usados aquí
ALLASFROMISJOINNULLONRECURSIVESELECTUNIONWHEREWITH
El intento, en números
- Líneas
- 19
- Caracteres a escribir
- 242
- Tokens
- 63
- Ritmo de tres estrellas
- 90 tpm
Al ritmo de tres estrellas de 90 tokens por minuto, este intento toma unos 42 segundos.
Paso 3 de 3 en Expresiones de tabla comunes; paso 6 de 24 en Analítica y reportes.