Funkcija SQL Server LEAD().

Funkcija Sql Server Lead



U ovom članku provest ćemo vas kroz osnove rada s funkcijom lead() u SQL Serveru. Objasnit ćemo što funkcija radi, njezinu sintaksu i praktične primjere kako je koristiti.

Vodeća funkcija SQL Servera

Glavna funkcija u SQL Serveru je analitička funkcija koja vam omogućuje pristup podacima iz sljedećeg retka u istom skupu rezultata bez samopridruživanja.

Funkcija vam omogućuje pristup retku na danom pomaku koji prethodi trenutnom retku. Na primjer, pomoću funkcije vođenja možete pronaći redak odmah nakon trenutnog retka, 10. redak od trenutnog retka itd.







Ova funkcija potiče programere baze podataka na izvođenje usporedbi redaka bez složenih zadataka kao što su spajanje, korištenje pogleda itd.



Sintaksa funkcije

Sljedeće prikazuje sintaksu funkcije lead() u SQL Serveru:



LEAD (skalarni_izraz [,pomak], [zadano])
PREKO ([particija_po_klauzuli] narudžba_po_klauzi)

Sljedeći popis je podržanih argumenata i njihove funkcije:





  1. skalarni_izraz – ovaj argument označava povratnu vrijednost temeljenu na definiranom pomaku. To može biti izraz bilo koje vrste koji vraća jednu vrijednost. Međutim, vrijednost scalar_expression ne može biti druga analitička/prozorska funkcija.
  2. pomak – ovo postavlja koliko je redaka od trenutne pozicije retka vrijednost dohvatila. Prema zadanim postavkama, funkcija će dohvatiti red neposredno uz pridjev trenutnog retka. Slično, vrijednost parametra pomaka ne može biti analitička funkcija ili negativan cijeli broj.
  3. zadano – ovaj parametar postavlja zadanu vrijednost ako je navedena vrijednost pomaka izvan opsega ciljne particije. Prema zadanim postavkama, funkcija će vratiti NULL.
  4. PARTITION BY – klauzula partition_by definira pravila koja dijele skup rezultata u različite odjeljke. Funkcija se zatim primjenjuje na svaku rezultirajuću particiju.
  5. ORDER BY – ovo definira logički redoslijed u kojem se primjenjuju retci u svakoj particiji.

Funkcija vraća tip podataka definiran u skalarnom_izrazu. Ako je vraćena vrijednost NULL, funkcija vraća NULL.

Uzorak podataka

Upotrijebimo neke uzorke baza podataka kako bismo najbolje ilustrirali kako se koristi glavna funkcija. Prvo upotrijebite upite kao što je prikazano u nastavku:



ISPUSTI BAZU PODATAKA AKO POSTOJI inventar;

STVARANJE inventara BAZE PODATAKA;

KORISTI inventar;

DROP TABLE IF EXISTS proizvodi;

CREATE TABLE proizvodi (
id int identitet primarni ključ nije null,
naziv_proizvoda varchar(100),
proizvođač varchar(50),
količina int nije null,
cijena int default 0,
in_stock bit
);
umetnite u proizvode (naziv_proizvoda, proizvođač, količina, cijena, na_lageru)
vrijednosti ('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' klasa S95B OLED 4K Smart TV', 'Samsung', 900, 1999.90, 1),
('Odyssey Ark Quantum Mini-LED zakrivljeni zaslon za igranje', 'Samsung', 50, 2999,90, 1);

Dobivena tablica je kao što je prikazano:

Primjer 1 – Korištenje funkcije SQL Server lead() preko skupa rezultata

Primjer u nastavku koristi funkciju lead() za vraćanje cijene sljedećeg proizvoda.

Odaberi
ime proizvoda,
proizvođač,
količina,
cijena,
olovo (cijena,
1) preko (
poredaj po količini)
iz
proizvodi;

Rezultirajuća tablica:

Budući da nema retka iz posljednjeg stupca, funkcija vraća NULL.

Primjer 2 – Korištenje funkcije SQL Server lead() preko skupa particija

Također možemo dohvatiti sljedeći proizvod u određenoj particiji. Na primjer, možemo particionirati gornje podatke na temelju proizvođača i primijeniti funkciju lead() u svakoj particiji

Primjer ilustracije je kao što je prikazano:

Odaberi
ime proizvoda,
proizvođač,
količina,
cijena,
olovo (cijena,
1) preko (
pregrada prema proizvođaču
poredaj po količini)
iz
proizvodi;

Gornji upit trebao bi podijeliti retke na temelju proizvođača i dohvatiti sljedeću cijenu za vrijednosti u svakoj particiji.

U ovom slučaju postoje tri particije.

Zaključak

U ovom ste postu razumjeli građevne blokove funkcije lead() u SQL Serveru. Također ste naučili kako koristiti funkciju lead() nad skupom rezultata i particije.