Una secuencia de números
Parte de la sección Más allá de lo básico del Journey de SQL de Coddy. Lección 20 de 27.
Conociste la palabra clave WITH en Fundamentos para nombrar una subconsulta, también conocida como CTE (Common Table Expression). Un CTE recursive va un paso más allá: permite que la subconsulta se refiera a sí misma, construyendo un resultado fila por fila.
La versión más simple genera una secuencia de números sin una tabla subyacente. La estructura es siempre la misma:
WITH RECURSIVE counter(n) AS (
SELECT 1 -- ancla: la fila inicial
UNION ALL
SELECT n + 1 FROM counter WHERE n < 5 -- recursivo: construye el siguiente a partir del último
)
SELECT n FROM counterLéelo así: comienza con n = 1, después sigue añadiendo filas donde cada n es el n + 1 anterior, deteniéndote cuando el WHERE deje de coincidir. El resultado es 1, 2, 3, 4, 5.
Las dos partes del cuerpo están unidas por UNION ALL. La primera es el anchor: las filas semilla. La segunda es el recursive step: consulta la propia CTE.
Desafío
FácilEscribe una CTE recursiva llamada powers con dos columnas:
i: el índice de iteración, comenzando en1p:2elevado a lai-ésima potencia (2,4,8, …)
Detente cuando p vaya a superar 1000. Devuelve ambas columnas, ordenadas por i en orden ascendente.
Pruébalo tú mismo
WITH RECURSIVE powers(i, p) AS (
-- ancla: i=1, p=2
-- recursivo: i+1, p*2, hasta que p alcance 1000
)
SELECT i, p FROM powers ORDER BY i
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Más allá de lo básico
Practica por tu cuenta: Playground de SQL