Funcția SQL Server LEAD().

Functia Sql Server Lead



În acest articol, vă vom prezenta elementele fundamentale ale lucrului cu funcția lead() în SQL Server. Vom acoperi ceea ce face funcția, sintaxa ei și exemple practice de utilizare.

Funcția principală SQL Server

Funcția principală din SQL Server este o funcție analitică care vă permite să accesați date dintr-un rând următor din același set de rezultate fără o auto-unire.

Funcția vă permite să accesați un rând la un decalaj dat înainte de rândul curent. De exemplu, folosind funcția lead, puteți găsi rândul imediat după rândul curent, al 10-lea rând din rândul curent etc.







Această funcție îi determină pe dezvoltatorii de baze de date să efectueze comparații de rânduri fără sarcini complexe, cum ar fi alăturarea, utilizarea vizualizărilor etc.



Sintaxa funcției

Următoarele prezintă sintaxa funcției lead() în SQL Server:



LEAD (expresie_scalar [ ,offset ] , [ implicit ] )
OVER ( [ partition_by_clause ] order_by_clause )

Lista ulterioară este argumentele acceptate și funcționalitatea acestora:





  1. scalar_expression – acest argument denotă valoarea returnată bazată pe offset-ul definit. Aceasta poate fi o expresie de orice tip care returnează o singură valoare. Totuși, valoarea expresiei_scalare nu poate fi o altă funcție analitică/fereastră.
  2. offset – aceasta setează câte rânduri din poziţia rândului curent valoarea preluată. În mod implicit, funcția va prelua imediat adjectivul rând la rândul curent. În mod similar, valoarea parametrului offset nu poate fi o funcție analitică sau un număr întreg negativ.
  3. implicit – acest parametru setează valoarea implicită dacă valoarea offset furnizată depășește domeniul de aplicare al partiției țintă. În mod implicit, funcția va returna NULL.
  4. PARTITION BY – clauza partition_by definește regulile care împart setul de rezultate în diferite secțiuni. Funcția este apoi aplicată fiecărei partiții rezultate.
  5. ORDER BY – aceasta definește ordinea logică în care sunt aplicate rândurile din fiecare partiție.

Funcția returnează tipul de date definit în scalar_expression. Dacă valoarea returnată este NULL, funcția returnează NULL.

Eșantion de date

Să folosim câteva exemple de baze de date pentru a ilustra cel mai bine cum să folosim funcția lead. Mai întâi, utilizați interogările așa cum se arată mai jos:



DROP BAZA DE DATE DACĂ EXISTĂ inventarul;

CREAȚI inventarul BAZEI DE DATE;

UTILIZAȚI inventarul;

DROP TABLE DACA EXISTA produse;

produse CREATE TABLE (
id int cheia primară de identitate nu este nulă,
nume_produs varchar(100),
producător varchar(50),
cantitate int nu nulă,
price int implicit 0,
in_stock bit
);
inserați în produse (nume_produs, producător, cantitate, preț, stoc)
valori („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),
(TV Smart 4K OLED clasa „55” S95B”, „Samsung”, 900, 1999.90, 1),
(„Ecran de jocuri curbat Odyssey Ark Quantum Mini-LED”, „Samsung”, 50, 2999.90, 1);

Tabelul rezultat este așa cum se arată:

Exemplul 1 – Utilizarea funcției SQL Server lead() peste un set de rezultate

Exemplul de mai jos folosește funcția lead() pentru a returna prețul următorului produs.

Selectați
numele produsului,
producător,
cantitate,
Preț,
plumb (pret,
1) peste (
comanda dupa cantitate)
din
produse;

Tabelul rezultat:

Deoarece nu există niciun rând din ultima coloană, funcția returnează NULL.

Exemplul 2 – Utilizarea funcției SQL Server lead() peste un set de partiții

De asemenea, putem prelua următorul produs dintr-o partiție dată. De exemplu, putem partiționa datele de mai sus în funcție de producător și putem aplica funcția lead() în fiecare partiție

Un exemplu de ilustrare este așa cum se arată:

Selectați
numele produsului,
producător,
cantitate,
Preț,
plumb (pret,
1) peste (
compartimentare dupa producator
comanda dupa cantitate)
din
produse;

Interogarea de mai sus ar trebui să împartă rândurile în funcție de producător și să aducă următorul preț pentru valorile din fiecare partiție.

În acest caz, există trei partiții.

Concluzie

În această postare, ați înțeles elementele de bază ale funcției lead() în SQL Server. De asemenea, ați învățat cum să utilizați funcția lead() peste un rezultat și un set de partiții.