Bir Sayı Dizisi
Coddy'nin SQL Journey'sinin Temellerin Ötesi bölümünün bir parçası. Ders 20 / 27.
WITH anahtar sözcüğüyle Temel Bilgiler bölümünde, CTE (Ortak Tablo İfadesi) olarak da bilinen bir alt sorguyu adlandırmak için karşılaştın. Özyinelemeli bir CTE bir adım daha ileri gider: alt sorgunun kendisine başvurmasına ve satır satır bir sonuç oluşturmasına olanak tanır.
En basit sürüm, temel bir tablo olmadan bir sayı dizisi üretir. Şekil her zaman aynıdır:
WITH RECURSIVE counter(n) AS (
SELECT 1 -- anchor: başlangıç satırı
UNION ALL
SELECT n + 1 FROM counter WHERE n < 5 -- recursive: bir sonrakini sonuncudan oluştur
)
SELECT n FROM counterŞu şekilde okuyun: n = 1 ile başlayın, ardından WHERE eşleşmeyi durdurana kadar her bir n değerinin önceki n + 1 olduğu satırları eklemeye devam edin. Sonuç 1, 2, 3, 4, 5 olur.
Gövdenin iki bölümü UNION ALL ile birleştirilir. İlki başlangıç noktasıdır: başlangıç satırları. İkincisi özyinelemeli adımdır: CTE'nin kendisini sorgular.
Görev
Kolaypowers adlı, iki sütunlu özyinelemeli bir CTE yazın:
i:1değerinden başlayan yineleme indeksip:i. kuvvetine yükseltilmiş2(2,4,8, …)
p değerinin 1000 değerini aşacağı noktada durun. Her iki sütunu da i değerine göre artan sırada döndürün.
Kendin dene
WITH RECURSIVE powers(i, p) AS (
-- çapa: i=1, p=2
-- özyinelemeli: i+1, p*2, p 1000'e ulaşana kadar
)
SELECT i, p FROM powers ORDER BY i
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Temellerin Ötesi bölümündeki tüm dersler
2String Fonksiyonları
LENGTH, UPPER, LOWERSUBSTRINSTRREPLACE ve TRIM|| ile BirleştirmeÖzet - FaturalarKendi başına pratik yap: SQL playground