Funkce SQL lead() umožňuje přístup k dalšímu řádku z aktuálního řádku s určitým posunem. Stručně řečeno, funkce lead() umožňuje přístup k dalšímu řádku z aktuálního. Zadáním hodnoty offsetu získáte přístup k dalším 1, 2, 3 atd. řádkům z aktuálního řádku.
Je opakem funkce lag(), která umožňuje přístup k předchozím řádkům.
Funkce SQL Lead().
Syntaxe funkce je následující:
LEAD(výraz_hodnoty; posun [, výchozí])
PŘES (
[PARTITION BY partition_expression]
ORDER BY sort_expression [ASC | DESC]
);
Níže jsou uvedeny podporované argumenty:
- hodnota_výraz – Určuje návratovou hodnotu předchozího řádku. Výraz se musí vyhodnotit jako jediná hodnota.
- offset – Určuje, o kolik řádků vpřed od aktuálního řádku se má přistupovat.
- výchozí – Nastaví výchozí hodnotu, pokud je posun mimo rozsah logické části. Ve výchozím nastavení je hodnota nastavena na NULL.
- Rozdělit podle – Určuje, jak rozdělit data.
- Seřadit podle – Nastavuje formát pořadí pro řádky v každém oddílu.
Ukázkové nastavení dat
Než se ponoříme do fungování funkce lead(), začněme nastavením základní tabulky pro demonstrační účely.
CREATE TABLE produkty (
product_id INT PRIMARY KEY AUTO_INCREMENT,
název_produktu VARCHAR(255),
kategorie VARCHAR(255),
cena DECIMAL(10, 2),
množství INT,
expiration_date DATE,
čárový kód VELKÝ
);
vložit
do
produkty (název_produktu,
kategorie,
cena,
Množství,
Datum spotřeby,
čárový kód)
hodnoty ('Chef Hat 25cm',
'pekařství',
24,67,
57,
'2023-09-09',
2854509564204);
vložit
do
produkty (název_produktu,
kategorie,
cena,
Množství,
Datum spotřeby,
čárový kód)
hodnoty („křepelčí vejce – konzerva“,
'spíž',
17,99,
67,
'2023-09-29',
1708039594250);
vložit
do
produkty (název_produktu,
kategorie,
cena,
Množství,
Datum spotřeby,
čárový kód)
hodnoty ('Káva – vaječný likér capuccino',
'pekařství',
92,53,
10,
'2023-09-22',
8704051853058);
vložit
do
produkty (název_produktu,
kategorie,
cena,
Množství,
Datum spotřeby,
čárový kód)
hodnoty ('Hruška – pichlavý',
'pekařství',
65,29,
48,
'2023-08-23',
5174927442238);
vložit
do
produkty (název_produktu,
kategorie,
cena,
Množství,
Datum spotřeby,
čárový kód)
hodnoty ('Těstoviny - Andělské vlasy',
'spíž',
48,38,
59,
'2023-08-05',
8008123704782);
vložit
do
produkty (název_produktu,
kategorie,
cena,
Množství,
Datum spotřeby,
čárový kód)
hodnoty („Víno – Prosecco Valdobiaddene“,
'vyrobit',
44,18,
3,
'2023-03-13',
6470981735653);
vložit
do
produkty (název_produktu,
kategorie,
cena,
Množství,
Datum spotřeby,
čárový kód)
hodnoty ('Pečivo – French Mini Assorted',
'spíž',
36,73,
52,
'2023-05-29',
5963886298051);
vložit
do
produkty (název_produktu,
kategorie,
cena,
Množství,
Datum spotřeby,
čárový kód)
hodnoty („Pomeranč – konzerva, mandarinka“,
'vyrobit',
65,0,
1,
'2023-04-20',
6131761721332);
vložit
do
produkty (název_produktu,
kategorie,
cena,
Množství,
Datum spotřeby,
čárový kód)
hodnoty („Vepřové maso – plec“,
'vyrobit',
55,55,
73,
'2023-05-01',
9343592107125);
vložit
do
produkty (název_produktu,
kategorie,
cena,
Množství,
Datum spotřeby,
čárový kód)
hodnoty („Dc Hikiage Hira Huba“,
'vyrobit',
56,29,
53,
'2023-04-14',
3354910667072);
Příklad 1:
V tomto případě máme přístup k tabulce „produkty“, která obsahuje informace o produktu. Předpokládejme, že chceme získat další čárový kód z aktuálního řádku.
Funkci lead() můžeme použít následovně:
Předpokládejme, že máme tabulku, která obsahuje následující informace o zaměstnanci:
vybratjméno výrobku,
cena,
náskok (čárový kód) přes (oddíl podle kategorie
seřadit podle
cena vzestupně) jako další_položka
z
produkty p;
Daný kód rozděluje data na základě kategorie. Poté pomocí funkce lead() načte další čárový kód v oddílu.
Výsledný výstup je následující:
Příklad 2:
Pokud v určitém sloupci není žádný další řádek (mimo rámec), funkce nastaví hodnotu na NULL, jak je znázorněno v předchozím příkladu.
Chcete-li nastavit výchozí hodnotu pro jakýkoli přístup mimo rozsah, můžeme provést následující:
vybratjméno výrobku,
cena,
lead(čárový kód, 1, 'N/A') přes (oddíl podle kategorie
seřadit podle
cena vzestupně) jako další_položka
z
produkty p;
Výchozí hodnotu nastavíme na „N/A“. To by mělo nahradit jakoukoli hodnotu mimo rámec, jak je uvedeno v následujícím výstupu:
POZNÁMKA : Nastavení offsetu na 1 je podobné jako nezadání žádné hodnoty.
Příklad 3:
Předpokládejme, že chcete získat přístup k dalším dvěma řádkům z aktuálního řádku. Můžeme to udělat nastavením hodnoty offsetu na 2.
Příklad dotazu je ilustrován následovně:
vybratjméno výrobku,
cena,
lead(čárový kód, 2, 'N/A') přes (rozdělení podle kategorie
seřadit podle
cena vzestupně) jako další_položka
z
produkty p;
Tento dotaz vrátí další dva řádky v každém oddílu, jak je znázorněno v následujícím:
Tady to máš!
Závěr
V tomto tutoriálu jsme se naučili pracovat s funkcí lead() pro získání další položky z aktuálního řádku.