Menu
Coddy logo textTech

Eine Zahlenfolge

Teil des Abschnitts Über die Grundlagen hinaus der SQL-Journey von Coddy — Lektion 20 von 27.

Sie haben das Schlüsselwort WITH in Grundlagen kennengelernt, um eine Unterabfrage zu benennen, die auch als CTE (Common Table Expression) bekannt ist. Eine recursive CTE geht noch einen Schritt weiter: Sie ermöglicht es der Unterabfrage, auf sich selbst zu verweisen und so ein Ergebnis Zeile für Zeile aufzubauen.

Die einfachste Version erzeugt eine Sequenz von Zahlen ohne eine zugrunde liegende Tabelle. Die Struktur ist immer dieselbe:

WITH RECURSIVE counter(n) AS (
    SELECT 1                              -- Anker: die Startzeile
    UNION ALL
    SELECT n + 1 FROM counter WHERE n < 5 -- rekursiv: baue das Nächste aus dem Letzten
)
SELECT n FROM counter

Lies es wie folgt: Starte mit n = 1, füge dann weiterhin Zeilen hinzu, bei denen jedes n das vorherige n + 1 ist, und stoppe, wenn das WHERE nicht mehr zutrifft. Das Ergebnis ist 1, 2, 3, 4, 5.

Die beiden Teile des Körpers werden durch UNION ALL verbunden. Der erste ist der anchor: die Seed-Zeilen. Der zweite ist der recursive-Schritt: Er fragt die CTE selbst ab.

challenge icon

Aufgabe

Einfach

Schreiben Sie eine rekursive CTE namens powers mit zwei Spalten:

  • i: der Iterationsindex, starting bei 1
  • p: 2 hoch i (2, 4, 8, …)

Stoppen Sie, sobald p den Wert 1000 überschreiten würde. Geben Sie beide Spalten zurück, aufsteigend sortiert nach i.

Probier es selbst

WITH RECURSIVE powers(i, p) AS (
    -- Anker: i=1, p=2
    -- rekursiv: i+1, p*2, bis p 1000 erreicht
)
SELECT i, p FROM powers ORDER BY i
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Über die Grundlagen hinaus