Menu
Coddy logo textTech

Uma Sequência Numérica

Parte da seção Além do Básico do Journey de SQL da Coddy — lição 20 de 27.

Você conheceu a palavra-chave WITH em Fundamentals para nomear uma subconsulta, também conhecida como CTE (Common Table Expression). Uma CTE recursive vai um passo além: ela permite que a subconsulta se refira a si mesma, construindo um resultado linha por linha.

A versão mais simples gera uma sequência de números sem uma tabela subjacente. O formato é sempre o mesmo:

WITH RECURSIVE counter(n) AS (
    SELECT 1                              -- âncora: a linha inicial
    UNION ALL
    SELECT n + 1 FROM counter WHERE n < 5 -- recursivo: constrói o próximo a partir do último
)
SELECT n FROM counter

Leia como: comece com n = 1, depois continue adicionando linhas onde cada n é o n + 1 anterior, parando quando o WHERE deixar de corresponder. O resultado é 1, 2, 3, 4, 5.

As duas partes do corpo são unidas por UNION ALL. A primeira é o anchor: as linhas-semente. A segunda é o recursive step: ela consulta a própria CTE.

challenge icon

Desafio

Fácil

Escreva uma CTE recursiva chamada powers com duas colunas:

  • i: o índice de iteração, começando em 1
  • p: 2 elevado à i-ésima potência (2, 4, 8, …)

Pare assim que p exceder 1000. Retorne ambas as colunas, ordenadas por i de forma crescente.

Experimente você mesmo

WITH RECURSIVE powers(i, p) AS (
    -- âncora: i=1, p=2
    -- recursivo: i+1, p*2, até p atingir 1000
)
SELECT i, p FROM powers ORDER BY i
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Além do Básico