SQL Lead funkcija

Sql Lead Funkcija



Funkcija SQL lead() omogućuje vam pristup sljedećem retku iz trenutnog retka na određenom pomaku. Ukratko, funkcija lead() omogućuje vam pristup sljedećem retku iz trenutnog. Određivanjem vrijednosti pomaka, možete pristupiti sljedećim 1, 2, 3, itd. recima iz trenutnog.

To je suprotno od funkcije lag() koja vam omogućuje pristup prethodnim redovima.







Funkcija SQL Lead().

Sintaksa funkcije je sljedeća:



LEAD(izraz_vrijednosti, pomak [, zadano])
PREKO (
[PARTICIJA PO particionom_izrazu]
ORDER BY sort_expression [ASC | DESC]
);

Sljedeći su podržani argumenti:



  1. vrijednost_izraza – Određuje povratnu vrijednost prethodnog reda. Izraz mora dati jednu vrijednost.
  2. pomaknuti – Određuje koliko redaka naprijed od trenutnog retka za pristup.
  3. zadano – Postavlja zadanu vrijednost ako je pomak izvan opsega particije. Prema zadanim postavkama, vrijednost je postavljena na NULL.
  4. Podjela po – Određuje kako podijeliti podatke.
  5. Naručite po – Postavlja format redoslijeda za retke u svakoj particiji.

Postavljanje uzorka podataka

Prije nego što zaronimo u rad funkcije lead(), započnimo s postavljanjem osnovne tablice u svrhu demonstracije.





CREATE TABLE proizvodi (
product_id INT PRIMARY KEY AUTO_INCREMENT,
naziv_proizvoda VARCHAR(255),
kategorija VARCHAR(255),
cijena DECIMAL(10, 2),
količina INT,
datum_istjecanja DATE,
crtični kod BIGINT
);

umetnuti
u
proizvodi (ime_proizvoda,
kategorija,
cijena,
količina,
Datum isteka roka trajanja,
crtični kod)
vrijednosti ('Kuharska kapa 25 cm',
'pekara',
24.67,
57,
'2023-09-09',
2854509564204);

umetnuti
u
proizvodi (ime_proizvoda,
kategorija,
cijena,
količina,
Datum isteka roka trajanja,
crtični kod)
vrijednosti ('Prepeličja jaja - konzervirana',
'ostava',
17.99,
67,
'2023-09-29',
1708039594250);

umetnuti
u
proizvodi (ime_proizvoda,
kategorija,
cijena,
količina,
Datum isteka roka trajanja,
crtični kod)
vrijednosti ('Kava - Egg Nog Capuccino',
'pekara',
92.53,
10,
'2023-09-22',
8704051853058);

umetnuti
u
proizvodi (ime_proizvoda,
kategorija,
cijena,
količina,
Datum isteka roka trajanja,
crtični kod)
vrijednosti ('Kruška - bodljikava',
'pekara',
65.29,
48,
'2023-08-23',
5174927442238);

umetnuti
u
proizvodi (ime_proizvoda,
kategorija,
cijena,
količina,
Datum isteka roka trajanja,
crtični kod)
vrijednosti ('Tjestenina - anđeoska kosa',
'ostava',
48.38,
59,
'2023-08-05',
8008123704782);

umetnuti
u
proizvodi (ime_proizvoda,
kategorija,
cijena,
količina,
Datum isteka roka trajanja,
crtični kod)
vrijednosti ('Vino - Prosecco Valdobiaddene',
'proizvesti',
44.18,
3,
'2023-03-13',
6470981735653);

umetnuti
u
proizvodi (ime_proizvoda,
kategorija,
cijena,
količina,
Datum isteka roka trajanja,
crtični kod)
vrijednosti ('Pecivo - francuski mini izbor',
'ostava',
36.73,
52,
'2023-05-29',
5963886298051);

umetnuti
u
proizvodi (ime_proizvoda,
kategorija,
cijena,
količina,
Datum isteka roka trajanja,
crtični kod)
vrijednosti ('Naranča - konzervirana, mandarina',
'proizvesti',
65,0,
1,
'20.4.2023',
6131761721332);

umetnuti
u
proizvodi (ime_proizvoda,
kategorija,
cijena,
količina,
Datum isteka roka trajanja,
crtični kod)
vrijednosti ('Svinjetina - plećka',
'proizvesti',
55.55,
73,
'2023-05-01',
9343592107125);

umetnuti
u
proizvodi (ime_proizvoda,
kategorija,
cijena,
količina,
Datum isteka roka trajanja,
crtični kod)

vrijednosti ('Dc Hikiage Hira Huba',
'proizvesti',
56.29,
53,
'2023-04-14',
3354910667072);

Primjer 1:

U ovom slučaju imamo pristup tablici 'proizvodi' koja sadrži podatke o proizvodu. Pretpostavimo da želimo dobiti sljedeći crtični kod iz trenutnog retka.

Funkciju lead() možemo koristiti na sljedeći način:



Pretpostavimo da imamo tablicu koja sadrži podatke o zaposleniku kako slijedi:

Izaberi
ime proizvoda,
cijena,
dovesti (crtični kod) preko (podjela po kategoriji
naručiti po
price asc) kao next_item
iz
proizvodi p;

Zadani kod dijeli podatke na temelju kategorije. Zatim dohvaća sljedeći crtični kod u particiji pomoću funkcije lead().

Rezultirajući izlaz je sljedeći:

Primjer 2:

Ako u određenom stupcu nema sljedećeg retka (izvan granica), funkcija postavlja vrijednost na NULL kao što je prikazano u prethodnom primjeru.

Da bismo postavili zadanu vrijednost za bilo koji pristup izvan opsega, možemo učiniti sljedeće:

Izaberi
ime proizvoda,
cijena,
lead(barcode, 1, 'N/A') over (particija po kategoriji
naručiti po
price asc) kao next_item
iz
proizvodi p;

Postavili smo zadanu vrijednost na 'N/A'. Ovo bi trebalo zamijeniti bilo koju vrijednost izvan granice kao što je prikazano u sljedećem izlazu:

BILJEŠKA : Postavljanje pomaka na 1 slično je neodređenju nikakve vrijednosti.

Primjer 3:

Pretpostavimo da želite pristupiti sljedeća dva retka iz trenutnog retka. To možemo učiniti postavljanjem vrijednosti pomaka na 2.

Primjer upita ilustriran je u nastavku:

Izaberi
ime proizvoda,
cijena,
lead(barcode, 2, 'N/A') over (particija po kategoriji
naručiti po
price asc) kao next_item
iz
proizvodi p;

Ovaj upit vraća sljedeća dva retka u svakoj particiji kao što je prikazano u nastavku:

Eto ga!

Zaključak

U ovom vodiču naučili smo kako raditi s funkcijom lead() da bismo dobili sljedeću stavku iz trenutnog retka.