Funkcia SQL lead() vám umožňuje prístup k ďalšiemu riadku z aktuálneho riadka s určitým posunom. Stručne povedané, funkcia lead() vám umožňuje prístup k ďalšiemu riadku z aktuálneho. Zadaním hodnoty posunu získate prístup k ďalším 1, 2, 3 atď. riadkom z aktuálneho.
Je to opak funkcie lag(), ktorá vám umožňuje prístup k predchádzajúcim riadkom.
Funkcia SQL Lead().
Syntax funkcie je nasledovná:
LEAD(výraz_hodnoty; posun [, predvolená hodnota])
NAD (
[PARTITION BY partition_expression]
ORDER BY sort_expression [ASC | DESC]
);
Nasledujú podporované argumenty:
- hodnota_výraz – Určuje návratovú hodnotu predchádzajúceho riadku. Výraz sa musí vyhodnotiť ako jedna hodnota.
- offset – Určuje, na koľko riadkov vpred od aktuálneho riadka sa má pristupovať.
- predvolená – Nastaví predvolenú hodnotu, ak je posun mimo rozsahu oddielu. Štandardne je hodnota nastavená na NULL.
- Rozdelenie podľa – Špecifikuje, ako rozdeliť údaje.
- Zoradiť podľa – Nastavuje formát poradia pre riadky v každom oddiele.
Nastavenie vzorových údajov
Predtým, ako sa ponoríme do fungovania funkcie lead(), začnime nastavením základnej tabuľky na demonštračné účely.
Produkty CREATE TABLE (
product_id INT PRIMARY KEY AUTO_INCREMENT,
názov_produktu VARCHAR(255),
kategória VARCHAR(255),
cena DECIMAL(10, 2),
množstvo INT,
expiration_date DATE,
čiarový kód BIGINT
);
vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty („Chef Klobúk 25 cm“,
'pekáreň',
24,67,
57,
'2023-09-09',
2854509564204);
vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty („prepeličie vajcia – konzervované“,
'špajza',
17,99,
67,
'2023-09-29',
1708039594250);
vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty („Káva – vaječný likér capuccino“,
'pekáreň',
92,53,
10,
'2023-09-22',
8704051853058);
vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty ('Hruška - Ostnatý',
'pekáreň',
65,29,
48,
'2023-08-23',
5174927442238);
vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty („cestoviny – anjelské vlasy“,
'špajza',
48,38,
59,
'2023-08-05',
8008123704782);
vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty („Víno – Prosecco Valdobiaddene“,
'produkovať',
44,18,
3,
'2023-03-13',
6470981735653);
vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty ('Pečivo – francúzske mini rôzne',
'špajza',
36,73,
52,
'2023-05-29',
5963886298051);
vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty („Pomaranč – konzerva, mandarínka“,
'produkovať',
65,0,
1,
'2023-04-20',
6131761721332);
vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty („bravčové mäso – plec“,
'produkovať',
55,55,
73,
'2023-05-01',
9343592107125);
vložiť
do
produkty (názov_produktu,
kategória,
cena,
množstvo,
dátum spotreby,
čiarový kód)
hodnoty („Dc Hikiage Hira Huba“,
'produkovať',
56,29,
53,
'2023-04-14',
3354910667072);
Príklad 1:
V tomto prípade máme prístup k tabuľke „produkty“, ktorá obsahuje informácie o produkte. Predpokladajme, že chceme získať ďalší čiarový kód z aktuálneho riadku.
Funkciu lead() môžeme použiť takto:
Predpokladajme, že máme tabuľku, ktorá obsahuje nasledujúce informácie o zamestnancovi:
vyberteMeno Produktu,
cena,
náskok (čiarový kód) nad (rozdelenie podľa kategórie
zoradiť podľa
cena vzostupne) ako ďalšia_položka
od
produkty p;
Daný kód rozdeľuje údaje na základe kategórie. Potom pomocou funkcie lead() získa ďalší čiarový kód v oddiele.
Výsledný výstup je nasledovný:
Príklad 2:
Ak v konkrétnom stĺpci nie je žiadny ďalší riadok (mimo väzby), funkcia nastaví hodnotu na NULL, ako je uvedené v predchádzajúcom príklade.
Ak chcete nastaviť predvolenú hodnotu pre akýkoľvek prístup mimo rozsahu, môžeme urobiť nasledovné:
vyberteMeno Produktu,
cena,
lead(čiarový kód, 1, 'N/A') cez (rozdelenie podľa kategórie
zoradiť podľa
cena vzostupne) ako ďalšia_položka
od
produkty p;
Predvolenú hodnotu sme nastavili na „N/A“. Toto by malo nahradiť akúkoľvek hodnotu mimo hranice, ako je uvedené v nasledujúcom výstupe:
POZNÁMKA : Nastavenie posunu na 1 je podobné, ako keby ste nezadali žiadnu hodnotu.
Príklad 3:
Predpokladajme, že chcete získať prístup k ďalším dvom riadkom z aktuálneho riadku. Môžeme to urobiť nastavením hodnoty offsetu na 2.
Príklad dotazu je ilustrovaný nasledovne:
vyberteMeno Produktu,
cena,
lead(čiarový kód, 2, 'N/A') cez (rozdelenie podľa kategórie
zoradiť podľa
cena vzostupne) ako ďalšia_položka
od
produkty p;
Tento dotaz vráti ďalšie dva riadky v každom oddiele, ako je uvedené nižšie:
Tu to máte!
Záver
V tomto návode sme sa naučili pracovať s funkciou lead() na získanie ďalšej položky z aktuálneho riadka.