Menu
Coddy logo textTech

Ciąg liczb

Część sekcji Poza podstawami ścieżki SQL w Coddy. Lekcja 20 z 27.

W Podstawach poznasz słowo kluczowe WITH, służące do nadawania nazwy podzapytaniu, znanemu również jako CTE (Common Table Expression). Rekurencyjne CTE idzie o krok dalej: pozwala podzapytaniu odwoływać się do samego siebie i budować wynik wiersz po wierszu.

Najprostsza wersja generuje sekwencję liczb bez tabeli bazowej. Schemat jest zawsze taki sam:

WITH RECURSIVE counter(n) AS (
    SELECT 1                              -- część bazowa: wiersz początkowy
    UNION ALL
    SELECT n + 1 FROM counter WHERE n < 5 -- część rekurencyjna: utwórz kolejny wiersz na podstawie poprzedniego
)
SELECT n FROM counter

Odczytaj to tak: zacznij od n = 1, a następnie dodawaj wiersze, w których każde n jest równe poprzedniemu n + 1, i zakończ, gdy WHERE przestanie pasować. Wynik to 1, 2, 3, 4, 5.

Dwie części ciała są połączone za pomocą UNION ALL. Pierwsza to część bazowa: wiersze początkowe. Druga to krok rekurencyjny: wykonuje zapytanie do samej CTE.

challenge icon

Wyzwanie

Łatwy

Napisz rekurencyjne CTE o nazwie powers z dwiema kolumnami:

  • i: indeks iteracji, zaczynający się od 1
  • p: 2 podniesione do potęgi i (2, 4, 8, …)

Zakończ, gdy p przekroczyłoby 1000. Zwróć obie kolumny, posortowane rosnąco według i.

Spróbuj swoich sił

WITH RECURSIVE powers(i, p) AS (
    -- początkowy: i=1, p=2
    -- rekurencyjny: i+1, p*2, aż p osiągnie 1000
)
SELECT i, p FROM powers ORDER BY i
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Poza podstawami

Poćwicz samodzielnie: Edytor online SQL