Funkcija SQL Server LEAD().

Funkcija Sql Server Lead



V tem članku vas bomo popeljali skozi osnove dela s funkcijo lead() v SQL Serverju. Opisali bomo, kaj funkcija počne, njeno sintakso in praktične primere, kako jo uporabljati.

Vodilna funkcija SQL Server

Funkcija vodila v strežniku SQL Server je analitična funkcija, ki vam omogoča dostop do podatkov iz naslednje vrstice v istem nizu rezultatov brez samozdruževanja.

Funkcija vam omogoča dostop do vrstice na danem odmiku pred trenutno vrstico. Na primer, s funkcijo vodila lahko poiščete vrstico takoj za trenutno vrstico, 10. vrstico od trenutne vrstice itd.







Ta funkcija spodbuja razvijalce baz podatkov, da izvajajo primerjave vrstic brez zapletenih nalog, kot so združevanje, uporaba pogledov itd.



Sintaksa funkcije

Naslednje prikazuje sintakso funkcije lead() v strežniku SQL Server:



LEAD (skalarni_izraz [,odmik], [privzeto])
NAD ([particija_po_členu] naročilo_po_členu)

Naslednji seznam je podprtih argumentov in njihove funkcionalnosti:





  1. skalarni_izraz – ta argument označuje vrnjeno vrednost na podlagi definiranega odmika. To je lahko izraz katere koli vrste, ki vrne eno samo vrednost. Vendar pa vrednost scalar_expression ne more biti druga analitična/okenska funkcija.
  2. odmik – to nastavi, koliko vrstic od trenutnega položaja vrstice je pridobila vrednost. Privzeto bo funkcija pridobila vrstico takojšnji pridevnik trenutne vrstice. Podobno vrednost parametra odmika ne more biti analitična funkcija ali negativno celo število.
  3. privzeto – ta parameter nastavi privzeto vrednost, če podana vrednost odmika presega obseg ciljne particije. Privzeto bo funkcija vrnila NULL.
  4. PARTITION BY – klavzula partition_by določa pravila, ki razdelijo niz rezultatov v različne odseke. Funkcija se nato uporabi za vsako nastalo particijo.
  5. ORDER BY – to določa logični vrstni red, v katerem se uporabljajo vrstice v vsaki particiji.

Funkcija vrne podatkovni tip, definiran v skalarnem_izrazu. Če je vrnjena vrednost NULL, funkcija vrne NULL.

Vzorčni podatki

Uporabimo nekaj vzorčnih baz podatkov, da najbolje ponazorimo, kako uporabljati funkcijo vodila. Najprej uporabite poizvedbe, kot je prikazano spodaj:



IZBRIŠITE BAZO PODATKOV, ČE OBSTAJA inventar;

USTVARITE inventar BAZE PODATKOV;

UPORABA inventarja;

DROP TABLE IF EXISTS izdelki;

CREATE TABLE izdelki (
id int primarni ključ identitete ni nič,
ime_izdelka varchar(100),
proizvajalec varchar(50),
količina int ni ničelna,
privzeta cena 0,
in_stock bit
);
vstavi v izdelke (ime_izdelka, proizvajalec, količina, cena, na zalogi)
vrednosti ('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' razred S95B OLED 4K Smart TV', 'Samsung', 900, 1999.90, 1),
('Odyssey Ark Quantum Mini-LED ukrivljen igralni zaslon', 'Samsung', 50, 2999.90, 1);

Dobljena tabela je prikazana:

Primer 1 – Uporaba funkcije SQL Server lead() nad nizom rezultatov

Spodnji primer uporablja funkcijo lead() za vrnitev cene naslednjega izdelka.

izberite
ime izdelka,
proizvajalec,
količina,
cena,
svinec (cena,
1) čez (
naročilo po količini)
od
izdelki;

Končna tabela:

Ker iz zadnjega stolpca ni vrstice, funkcija vrne NULL.

Primer 2 – Uporaba funkcije SQL Server lead() nad nizom particij

Prav tako lahko pridobimo naslednji izdelek v dani particiji. Na primer, zgornje podatke lahko razdelimo glede na proizvajalca in uporabimo funkcijo lead() v vsaki particiji

Primer ilustracije je prikazan:

izberite
ime izdelka,
proizvajalec,
količina,
cena,
svinec (cena,
1) čez (
pregrada po proizvajalcu
naročilo po količini)
od
izdelki;

Zgornja poizvedba bi morala razdeliti vrstice glede na proizvajalca in pridobiti naslednjo ceno za vrednosti v vsaki particiji.

V tem primeru so tri particije.

Zaključek

V tej objavi ste razumeli gradnike funkcije lead() v strežniku SQL Server. Naučili ste se tudi, kako uporabiti funkcijo lead() nad nizom rezultatov in particijo.