Az SQL lead() függvény lehetővé teszi az aktuális sor következő sorának elérését egy adott eltolásnál. Röviden, a lead() függvény lehetővé teszi a következő sor elérését az aktuális sorból. Az eltolás értékének megadásával az aktuális sorból érheti el a következő 1, 2, 3 stb. sorokat.
Ellentéte a lag() függvénynek, amely lehetővé teszi az előző sorok elérését.
SQL Lead() függvény
A függvény szintaxisa a következő:
LEAD(érték_kifejezés, eltolás [, alapértelmezett])
VÉGE (
[PARTÍCIÓ SZERINT partíciókifejezés]
ORDER BY rendezési_kifejezés [ASC | DESC]
);
A támogatott érvek a következők:
- érték_kifejezés – Megadja az előző sor visszatérési értékét. A kifejezést egyetlen értékre kell kiértékelni.
- beszámítás – Meghatározza, hogy az aktuális sortól előre hány sort kell elérni.
- alapértelmezett – Beállítja az alapértelmezett értéket, ha az eltolás kívül esik a partíció hatókörén. Alapértelmezés szerint az érték NULL.
- Partíció szerint – Meghatározza az adatok particionálásának módját.
- Rendezés – Az egyes partíciókban beállítja a sorok sorrendjének formátumát.
Minta adatbeállítás
Mielőtt belemerülnénk a lead() függvény működésébe, kezdjük az alaptáblázat bemutatásával.
CREATE TABLE termékek (
product_id INT ELSŐDLEGES KULCS AUTO_INCREMENT,
termék_neve VARCHAR(255),
VARCHAR kategória(255),
ár DECIMAL(10, 2),
mennyiség INT,
expiration_date DATE,
vonalkód BIGINT
);
betét
-ba
termékek (terméknév,
kategória,
ár,
Mennyiség,
lejárati dátum,
vonalkód)
értékek ('Séf kalap 25 cm',
'pékség',
24.67,
57,
'2023-09-09',
2854509564204);
betét
-ba
termékek (terméknév,
kategória,
ár,
Mennyiség,
lejárati dátum,
vonalkód)
értékek ('Fürjtojás – Konzerv),
'éléskamra',
17,99,
67,
'2023-09-29',
1708039594250);
betét
-ba
termékek (terméknév,
kategória,
ár,
Mennyiség,
lejárati dátum,
vonalkód)
értékek ('Coffee - Egg Nog Capuccino',
'pékség',
92,53,
10,
'2023-09-22',
8704051853058);
betét
-ba
termékek (terméknév,
kategória,
ár,
Mennyiség,
lejárati dátum,
vonalkód)
értékek ('Körte - Tüskés',
'pékség',
65,29,
48,
'2023-08-23',
5174927442238);
betét
-ba
termékek (terméknév,
kategória,
ár,
Mennyiség,
lejárati dátum,
vonalkód)
értékek ('tészta - angyalhaj',
'éléskamra',
48.38,
59,
'2023-08-05',
8008123704782);
betét
-ba
termékek (terméknév,
kategória,
ár,
Mennyiség,
lejárati dátum,
vonalkód)
értékek ('Bor - Prosecco Valdobiaddene',
'termelni',
44.18,
3,
'2023-03-13',
6470981735653);
betét
-ba
termékek (terméknév,
kategória,
ár,
Mennyiség,
lejárati dátum,
vonalkód)
értékeket ('Püstök - French Mini Asorted',
'éléskamra',
36,73,
52,
'2023-05-29',
5963886298051);
betét
-ba
termékek (terméknév,
kategória,
ár,
Mennyiség,
lejárati dátum,
vonalkód)
értékek ('narancs - konzerv, mandarin',
'termelni',
65,0,
1,
'2023-04-20',
6131761721332);
betét
-ba
termékek (terméknév,
kategória,
ár,
Mennyiség,
lejárati dátum,
vonalkód)
értékek ('sertés - lapocka',
'termelni',
55,55,
73,
'2023-05-01',
9343592107125);
betét
-ba
termékek (terméknév,
kategória,
ár,
Mennyiség,
lejárati dátum,
vonalkód)
értékek ('Dc Hikiage Hira Huba',
'termelni',
56.29,
53,
'2023-04-14',
3354910667072);
1. példa:
Ebben az esetben hozzáférünk a „termékek” táblázathoz, amely a termékinformációkat tartalmazza. Tegyük fel, hogy a következő vonalkódot szeretnénk lekérni az aktuális sorból.
A lead() függvényt a következőképpen használhatjuk:
Tegyük fel, hogy van egy táblázatunk, amely a következő munkavállalói információkat tartalmazza:
válassza kitermék név,
ár,
lead(vonalkód) over (partíció kategória szerint
Rendezés
ár asc) következő_elemként
tól től
termékek p;
Az adott kód kategória alapján particionálja az adatokat. Ezután lekéri a partíció következő vonalkódját a lead() függvény segítségével.
A kapott kimenet a következő:
2. példa:
Ha egy adott oszlopban nincs következő sor (határon kívül), a függvény az értéket NULL-ra állítja, az előző példában látható módon.
A hatókörön kívüli hozzáférés alapértelmezett értékének beállításához a következőket tehetjük:
válassza kitermék név,
ár,
lead(vonalkód, 1, 'N/A') over (partíció kategória szerint
Rendezés
ár asc) következő_elemként
tól től
termékek p;
Az alapértelmezett értéket „N/A”-ra állítottuk. Ennek ki kell cserélnie minden határon kívüli értéket, ahogy az a következő kimenetben látható:
JEGYZET : Az eltolás 1-re állítása hasonló az érték megadásának mellőzéséhez.
3. példa:
Tegyük fel, hogy az aktuális sorból szeretne elérni a következő két sort. Ezt úgy tehetjük meg, hogy az eltolás értékét 2-re állítjuk.
Egy példa lekérdezést szemléltet a következő:
válassza kitermék név,
ár,
lead(vonalkód, 2, 'N/A') over (partíció kategória szerint
Rendezés
ár asc) következő_elemként
tól től
termékek p;
Ez a lekérdezés a következő két sort adja vissza az egyes partíciókban, ahogy az az alábbiakban látható:
Tessék, itt van!
Következtetés
Ebben az oktatóanyagban megtanultuk, hogyan kell a lead() függvénnyel dolgozni az aktuális sor következő elemének beszerzéséhez.