Funkce SQL Server LEAD().

Funkce Sql Server Lead



V tomto článku vás provedeme základy práce s funkcí lead() na serveru SQL Server. Probereme, co funkce dělá, její syntaxi a praktické příklady jejího použití.

Vedoucí funkce SQL Server

Funkce lead v SQL Server je analytická funkce, která umožňuje přístup k datům z následujícího řádku ve stejné sadě výsledků bez vlastního spojení.

Funkce umožňuje přístup k řádku s daným posunem předcházejícím aktuálnímu řádku. Například pomocí funkce lead můžete najít řádek bezprostředně za aktuálním řádkem, 10. řádek z aktuálního řádku atd.







Tato funkce nutí vývojáře databází provádět porovnávání řádků bez složitých úkolů, jako je spojování, používání pohledů atd.



Syntaxe funkce

Následující text zobrazuje syntaxi funkce lead() na serveru SQL Server:



LEAD ( skalární_výraz [ ,offset ] , [ výchozí ] )
OVER ( [ partition_by_clause ] order_by_clause )

Následující seznam obsahuje podporované argumenty a jejich funkce:





  1. skalární_výraz – tento argument označuje návratovou hodnotu na základě definovaného offsetu. Může to být výraz jakéhokoli typu, který vrací jednu hodnotu. Hodnota skalárního_výrazu však nemůže být jiná analytická/okenní funkce.
  2. offset – nastavuje, kolik řádků z aktuální pozice řádku byla hodnota načtena. Ve výchozím nastavení funkce načte řádek okamžitě s přídavným jménem k aktuálnímu řádku. Podobně hodnota parametru offset nemůže být analytická funkce nebo záporné celé číslo.
  3. default – tento parametr nastavuje výchozí hodnotu, pokud je zadaná hodnota offsetu mimo rozsah cílového oddílu. Ve výchozím nastavení funkce vrátí hodnotu NULL.
  4. PARTITION BY – klauzule partition_by definuje pravidla, která rozdělují sadu výsledků do různých sekcí. Funkce se poté aplikuje na každý výsledný oddíl.
  5. ORDER BY – definuje logické pořadí, ve kterém jsou použity řádky v každém oddílu.

Funkce vrací datový typ definovaný ve skalárním_výrazu. Pokud je vrácená hodnota NULL, funkce vrátí hodnotu NULL.

Vzorek dat

Použijme několik vzorových databází, abychom nejlépe ilustrovali, jak používat funkci lead. Nejprve použijte dotazy, jak je uvedeno níže:



VYHNĚTE DATABÁZI, POKUD EXISTUJE inventář;

VYTVOŘIT DATABÁZI inventář;

POUŽÍVEJTE inventář;

DROP TABLE IF EXISTS products;

CREATE TABLE produkty (
id int primární klíč identity není null,
product_name varchar(100),
výrobce varchar(50),
množství int není null,
cena int výchozí 0,
bit na skladě
);
vložit do produktů (název_produktu, výrobce, množství, cena, skladem)
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' třída S95B OLED 4K Smart TV', 'Samsung', 900, 1999,90, 1),
('Odyssey Ark Quantum Mini-LED Curved Gaming Screen', 'Samsung', 50, 2999,90, 1);

Výsledná tabulka vypadá takto:

Příklad 1 – Použití funkce SQL Server lead() přes sadu výsledků

Níže uvedený příklad používá funkci lead() k vrácení ceny dalšího produktu.

vybrat
jméno výrobku,
výrobce,
Množství,
cena,
olovo (cena,
1) přes (
objednávka podle množství)
z
produkty;

Výsledná tabulka:

Protože v posledním sloupci není žádný řádek, funkce vrátí hodnotu NULL.

Příklad 2 – Použití funkce SQL Server lead() přes sadu oddílů

Můžeme také načíst další produkt v daném oddílu. Například můžeme rozdělit data výše na základě výrobce a použít funkci lead() v každém oddílu

Příklad obrázku je následující:

vybrat
jméno výrobku,
výrobce,
Množství,
cena,
olovo (cena,
1) přes (
oddíl podle výrobce
objednávka podle množství)
z
produkty;

Výše uvedený dotaz by měl rozdělit řádky podle výrobce a načíst další cenu pro hodnoty v každém oddílu.

V tomto případě existují tři oddíly.

Závěr

V tomto příspěvku jste pochopili stavební bloky funkce lead() v SQL Server. Také jste se naučili, jak používat funkci lead() přes sadu výsledků a oddílů.