Funkcia SQL Server LEAD().

Funkcia Sql Server Lead



V tomto článku vás prevedieme základmi práce s funkciou lead() na serveri SQL Server. Popíšeme, čo funkcia robí, jej syntax a praktické príklady jej použitia.

Vedúca funkcia servera SQL

Vedúca funkcia v SQL Server je analytická funkcia, ktorá vám umožňuje pristupovať k údajom z nasledujúceho riadka v rovnakej množine výsledkov bez vlastného spojenia.

Táto funkcia vám umožňuje prístup k riadku s daným posunom pred aktuálnym riadkom. Napríklad pomocou funkcie lead môžete nájsť riadok hneď za aktuálnym riadkom, 10. riadok z aktuálneho riadku atď.







Táto funkcia núti vývojárov databáz vykonávať porovnávanie riadkov bez zložitých úloh, ako je spájanie, používanie pohľadov atď.



Syntax funkcie

Nasledujúci text zobrazuje syntax funkcie lead() na serveri SQL Server:



LEAD ( skalárny_výraz [ ,offset ] , [ predvolené ] )
OVER ( [ partition_by_clause ] order_by_clause )

Nasledujúci zoznam obsahuje podporované argumenty a ich funkčnosť:





  1. skalárny_výraz – tento argument označuje návratovú hodnotu na základe definovaného offsetu. Môže to byť výraz akéhokoľvek typu, ktorý vracia jednu hodnotu. Hodnota skalárneho_výrazu však nemôže byť iná analytická funkcia/funkcia okna.
  2. offset – nastavuje, o koľko riadkov z aktuálnej pozície riadku bola hodnota načítaná. V predvolenom nastavení funkcia načíta riadok okamžite s prídavným menom k ​​aktuálnemu riadku. Podobne hodnota parametra posunu nemôže byť analytická funkcia ani záporné celé číslo.
  3. default – tento parameter nastavuje predvolenú hodnotu, ak zadaná hodnota posunu presahuje rozsah cieľového oddielu. V predvolenom nastavení funkcia vráti hodnotu NULL.
  4. PARTITION BY – klauzula partition_by definuje pravidlá, ktoré rozdeľujú množinu výsledkov do rôznych sekcií. Funkcia sa potom aplikuje na každý výsledný oddiel.
  5. ORDER BY – definuje logické poradie, v ktorom sa použijú riadky v každej partícii.

Funkcia vráti dátový typ definovaný v skalárnom_výraze. Ak je vrátená hodnota NULL, funkcia vráti NULL.

Vzorové údaje

Použime niekoľko vzorových databáz, aby sme najlepšie ilustrovali, ako používať funkciu lead. Najprv použite dopyty, ako je uvedené nižšie:



ZAPNÚŤ DATABÁZU, AK EXISTUJE inventár;

VYTVORIŤ DATABÁZU inventár;

POUŽIŤ inventár;

ZAPUSTIŤ TABUĽKU, AK EXISTUJE produkty;

Produkty CREATE TABLE (
id int primárny kľúč identity nie je null,
product_name varchar(100),
výrobca varchar(50),
množstvo int nie je null,
cena int predvolená 0,
bit na sklade
);
vložiť do produktov (názov_produktu, výrobca, množstvo, cena, skladom)
hodnoty („Apple iPad Air“, „Apple“, 100, 569,99, 1),
('Samsung Galaxy Z Flip 4', 'Samsung', 302, 1569,00, 1),
(„Sony Playstation 5“, „Sony“,  500, 499,99, 1),
(„Samsung Galaxy Watch-5 Pro“, „Samsung“, 600, 209/.99, 1),
('Apple Watch Series 6', 'Apple', 459, 379,90, 1),
(„Apple AirPods Pro“, „Apple“, 200, 199,99, 1),
('55-palcový OLED 4K Smart TV triedy S95B', 'Samsung', 900, 1999,90, 1),
('Odyssey Ark Quantum Mini-LED zakrivená herná obrazovka', 'Samsung', 50, 2999,90, 1);

Výsledná tabuľka je takáto:

Príklad 1 – Použitie funkcie lead() SQL Servera nad množinou výsledkov

Nižšie uvedený príklad používa funkciu lead() na vrátenie ceny ďalšieho produktu.

vyberte
Meno Produktu,
výrobca,
množstvo,
cena,
olovo (cena,
1) cez (
objednať podľa množstva)
od
Produkty;

Výsledná tabuľka:

Keďže v poslednom stĺpci nie je žiadny riadok, funkcia vráti hodnotu NULL.

Príklad 2 – Použitie funkcie SQL Server lead() nad množinou oddielov

Môžeme tiež získať ďalší produkt v danom oddiele. Napríklad môžeme rozdeliť údaje vyššie na základe výrobcu a použiť funkciu lead() v každej oblasti

Príklad je znázornený na obrázku:

vyberte
Meno Produktu,
výrobca,
množstvo,
cena,
olovo (cena,
1) cez (
oddiel podľa výrobcu
objednať podľa množstva)
od
Produkty;

Vyššie uvedený dotaz by mal rozdeliť riadky podľa výrobcu a získať ďalšiu cenu pre hodnoty v každom oddiele.

V tomto prípade existujú tri oddiely.

Záver

V tomto príspevku ste pochopili stavebné bloky funkcie lead() na serveri SQL Server. Tiež ste sa naučili, ako používať funkciu lead() nad množinou výsledkov a oddielov.