Menu
Coddy logo textTech

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 counter

Lé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.

challenge icon

Desafío

Fácil

Escribe una CTE recursiva llamada powers con dos columnas:

  • i: el índice de iteración, comenzando en 1
  • p: 2 elevado a la i-é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
quiz iconPonte a prueba

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