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.