SQL Server LEAD() funktion

Sql Server Lead Funktion



I denne artikel vil vi guide dig gennem det grundlæggende i arbejdet med lead()-funktionen i SQL Server. Vi vil dække, hvad funktionen gør, dens syntaks og praktiske eksempler på, hvordan den bruges.

SQL Server Lead funktion

Lead-funktionen i SQL Server er en analytisk funktion, der giver dig adgang til data fra en efterfølgende række i samme resultatsæt uden en selv-join.

Funktionen giver dig adgang til en række med en given offset forud for den aktuelle række. For eksempel kan du ved hjælp af leadfunktionen finde rækken umiddelbart efter den aktuelle række, den 10. række fra den aktuelle række osv.







Denne funktion får databaseudviklere til at udføre rækkesammenligninger uden komplekse opgaver som f.eks. joinforbindelse, brug af visninger osv.



Funktions syntaks

Følgende viser syntaksen for lead()-funktionen i SQL Server:



LEAD ( scalar_expression [ , offset ] , [ default ] )
OVER ( [partition_by_clause] order_by_clause)

Den efterfølgende liste er de understøttede argumenter og deres funktionalitet:





  1. scalar_expression – dette argument angiver returværdien baseret på den definerede offset. Dette kan være et udtryk af enhver type, der returnerer en enkelt værdi. Værdien af ​​scalar_expression kan dog ikke være en anden analytisk/vinduesfunktion.
  2. offset – dette indstiller, hvor mange rækker fra den aktuelle rækkeposition værdien hentes. Som standard vil funktionen hente rækken med det samme adjektiv til den aktuelle række. På samme måde kan værdien af ​​offset-parameteren ikke være en analytisk funktion eller et negativt heltal.
  3. default – denne parameter indstiller standardværdien, hvis den angivne offsetværdi ligger uden for målpartitionens omfang. Som standard vil funktionen returnere NULL.
  4. PARTITION BY – partition_by-sætningen definerer reglerne, der opdeler resultatsættet i forskellige sektioner. Funktionen anvendes derefter på hver resulterende partition.
  5. ORDER BY – dette definerer den logiske rækkefølge, som rækkerne i hver partition anvendes i.

Funktionen returnerer den datatype, der er defineret i scalar_expression. Hvis den returnerede værdi er NULL, returnerer funktionen NULL.

Eksempel på data

Lad os bruge nogle eksempeldatabaser til at illustrere bedst, hvordan man bruger leadfunktionen. Brug først forespørgslerne som vist nedenfor:



SLIP DATABASE, HVIS DER FINNES beholdning;

OPRET DATABASE-beholdning;

BRUG inventar;

DROP TABEL HVIS FINDER produkter;

OPRET TABLE produkter (
id int identitet primær nøgle ikke null,
produktnavn varchar(100),
producent varchar(50),
mængde int ikke null,
pris int standard 0,
in_stock bit
);
indsæt i produkter (produktnavn, producent, antal, pris, på lager)
værdier ('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' Class S95B OLED 4K Smart TV', 'Samsung', 900, 1999.90, 1),
('Odyssey Ark Quantum Mini-LED Curved Gaming Screen', 'Samsung', 50, 2999,90, 1);

Den resulterende tabel er som vist:

Eksempel 1 – Brug af SQL Server lead()-funktion over et resultatsæt

Eksemplet nedenfor bruger funktionen lead() til at returnere prisen på det næste produkt.

Vælg
produktnavn,
fabrikant,
antal,
pris,
bly(pris,
1) over (
ordre efter mængde)
fra
Produkter;

Resultattabel:

Da der ikke er nogen række fra den sidste kolonne, returnerer funktionen NULL.

Eksempel 2 – Brug af SQL Server lead()-funktionen over et partitionssæt

Vi kan også hente det næste produkt i en given partition. For eksempel kan vi partitionere dataene ovenfor baseret på producenten og anvende funktionen lead() i hver partition

Et eksempel på illustration er som vist:

Vælg
produktnavn,
fabrikant,
antal,
pris,
bly(pris,
1) over (
partition efter producent
ordre efter mængde)
fra
Produkter;

Forespørgslen ovenfor bør opdele rækkerne baseret på producenten og hente den næste pris for værdierne i hver partition.

I dette tilfælde er der tre partitioner.

Konklusion

I dette indlæg forstod du byggestenene i lead()-funktionen i SQL Server. Du har også lært, hvordan du bruger funktionen lead() over et resultat- og partitionssæt.