Funkce vedoucího SQL

Funkce Vedouciho Sql



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:



  1. hodnota_výraz – Určuje návratovou hodnotu předchozího řádku. Výraz se musí vyhodnotit jako jediná hodnota.
  2. offset – Určuje, o kolik řádků vpřed od aktuálního řádku se má přistupovat.
  3. výchozí – Nastaví výchozí hodnotu, pokud je posun mimo rozsah logické části. Ve výchozím nastavení je hodnota nastavena na NULL.
  4. Rozdělit podle – Určuje, jak rozdělit data.
  5. 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:

vybrat
jmé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í:

vybrat
jmé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ě:

vybrat
jmé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.