SQL lead() işlevi, geçerli satırdan sonraki satıra belirli bir uzaklıkta erişmenizi sağlar. Kısacası, lead() işlevi geçerli satırdan sonraki satıra erişmenizi sağlar. Ofset değerini belirterek, geçerli satırdan sonraki 1, 2, 3 vb. satırlara erişebilirsiniz.
Önceki satırlara erişmenizi sağlayan lag() fonksiyonunun tam tersidir.
SQL Lead() İşlevi
İşlev sözdizimi aşağıdaki gibidir:
LEAD(değer_ifadesi; uzaklık [, varsayılan])
ÜZERİNDE (
[PARTITION BY partition_expression]
ORDER BY sıralama_ifadesi [ASC | DESC]
);
Desteklenen argümanlar şunlardır:
- değer_ifadesi – Önceki satırın dönüş değerini belirtir. İfadenin tek bir değerle değerlendirilmesi gerekir.
- telafi etmek – Erişim için geçerli satırdan kaç satır ileriye gidileceğini belirtir.
- varsayılan – Ofset bölümün kapsamı dışındaysa varsayılan değeri ayarlar. Varsayılan olarak değer NULL olarak ayarlanmıştır.
- Şuna göre bölümlendir: – Verilerin nasıl bölümleneceğini belirtir.
- Tarafından sipariş – Her bölümdeki satırların sıra formatını ayarlar.
Örnek Veri Kurulumu
Lead() fonksiyonunun işleyişine dalmadan önce, gösteri amacıyla temel tabloyu oluşturarak başlayalım.
CREATE TABLE ürünleri (
ürün_id INT BİRİNCİL ANAHTAR AUTO_INCREMENT,
ürün_adı VARCHAR(255),
kategori VARCHAR(255),
fiyat DECIMAL(10, 2),
miktar INT,
expiration_date DATE,
barkod BÜYÜK
);
sokmak
içine
ürünler (ürün_adı,
kategori,
fiyat,
miktar,
Son kullanma tarihi,
barkod)
değerler ('Şef Şapkası 25cm',
'fırın',
24.67,
57,
'2023-09-09',
2854509564204);
sokmak
içine
ürünler (ürün_adı,
kategori,
fiyat,
miktar,
Son kullanma tarihi,
barkod)
değerler ('Bıldırcın Yumurtası - Konserve',
'kiler',
17.99,
67,
'2023-09-29',
1708039594250);
sokmak
içine
ürünler (ürün_adı,
kategori,
fiyat,
miktar,
Son kullanma tarihi,
barkod)
değerler ('Kahve - Yumurta Nog Capuccino',
'fırın',
92.53,
10,
'2023-09-22',
8704051853058);
sokmak
içine
ürünler (ürün_adı,
kategori,
fiyat,
miktar,
Son kullanma tarihi,
barkod)
değerler ('Armut - Dikenli',
'fırın',
65.29,
48,
'2023-08-23',
5174927442238);
sokmak
içine
ürünler (ürün_adı,
kategori,
fiyat,
miktar,
Son kullanma tarihi,
barkod)
değerler ('Makarna - Melek Saçı',
'kiler',
48.38,
59,
'2023-08-05',
8008123704782);
sokmak
içine
ürünler (ürün_adı,
kategori,
fiyat,
miktar,
Son kullanma tarihi,
barkod)
değerler ('Şarap - Prosecco Valdobiaddene',
'üretmek',
44.18,
3,
'2023-03-13',
6470981735653);
sokmak
içine
ürünler (ürün_adı,
kategori,
fiyat,
miktar,
Son kullanma tarihi,
barkod)
değerler ('Pasta - Fransız Mini Karışık',
'kiler',
36.73,
52,
'2023-05-29',
5963886298051);
sokmak
içine
ürünler (ürün_adı,
kategori,
fiyat,
miktar,
Son kullanma tarihi,
barkod)
değerler ('Portakal - Konserve, Mandalina',
'üretmek',
65.0,
1,
'2023-04-20',
6131761721332);
sokmak
içine
ürünler (ürün_adı,
kategori,
fiyat,
miktar,
Son kullanma tarihi,
barkod)
değerler ('Domuz - Omuz',
'üretmek',
55.55,
73,
'2023-05-01',
9343592107125);
sokmak
içine
ürünler (ürün_adı,
kategori,
fiyat,
miktar,
Son kullanma tarihi,
barkod)
değerler ('Dc Hikiage Hira Huba',
'üretmek',
56.29,
53,
'2023-04-14',
3354910667072);
Örnek 1:
Bu durumda ürün bilgilerinin bulunduğu “ürünler” tablosuna ulaşıyoruz. Geçerli satırdan sonraki barkodu almak istediğimizi varsayalım.
Lead() fonksiyonunu şu şekilde kullanabiliriz:
Aşağıdaki gibi çalışan bilgilerini içeren bir tablomuz olduğunu varsayalım:
seçmeÜrün adı,
fiyat,
kurşun (barkod) üzeri (kategoriye göre bölümleme)
tarafından sipariş
fiyat artışı) next_item olarak
itibaren
ürünler p;
Verilen kod, verileri kategoriye göre bölümlere ayırır. Daha sonra lead() işlevini kullanarak bölümdeki bir sonraki barkodu getirir.
Sonuçta ortaya çıkan çıktı aşağıdaki gibidir:
Örnek 2:
Belirli bir sütunda sonraki satır yoksa (sınır dışı), işlev, önceki örnekte gösterildiği gibi değeri NULL olarak ayarlar.
Kapsam dışı erişim için varsayılan bir değer ayarlamak amacıyla aşağıdakileri yapabiliriz:
seçmeÜrün adı,
fiyat,
lead(barcode, 1, 'N/A') over (kategoriye göre bölümleme)
tarafından sipariş
fiyat artışı) next_item olarak
itibaren
ürünler p;
Varsayılan değeri “Yok” olarak ayarladık. Bu, aşağıdaki çıktıda gösterildiği gibi sınır dışı değerlerin yerini almalıdır:
NOT : Ofseti 1'e ayarlamak herhangi bir değer belirtmemeye benzer.
Örnek 3:
Geçerli satırdan sonraki iki satıra erişmek istediğinizi varsayalım. Bunu ofset değerini 2'ye ayarlayarak yapabiliriz.
Örnek bir sorgu aşağıda gösterilmektedir:
seçmeÜrün adı,
fiyat,
lead(barcode, 2, 'N/A') over (kategoriye göre bölümleme)
tarafından sipariş
fiyat artışı) next_item olarak
itibaren
ürünler p;
Bu sorgu, aşağıda gösterildiği gibi her bölümdeki sonraki iki satırı döndürür:
İşte aldın!
Çözüm
Bu derste, geçerli satırdaki sonraki öğeyi almak için lead() işleviyle nasıl çalışacağımızı öğrendik.