SQL Lideri İşlevi

Sql Lideri Islevi



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:



  1. değer_ifadesi – Önceki satırın dönüş değerini belirtir. İfadenin tek bir değerle değerlendirilmesi gerekir.
  2. telafi etmek – Erişim için geçerli satırdan kaç satır ileriye gidileceğini belirtir.
  3. 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.
  4. Şuna göre bölümlendir: – Verilerin nasıl bölümleneceğini belirtir.
  5. 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.