SQL Lead funktion

Sql Lead Funktion



SQL lead()-funktionen giver dig adgang til den næste række fra den aktuelle række med en specifik offset. Kort sagt, funktionen lead() giver dig adgang til den næste række fra den nuværende. Ved at angive offsetværdien kan du få adgang til de næste 1, 2, 3 osv. rækker fra den nuværende.

Det er det modsatte af lag()-funktionen, som giver dig adgang til de foregående rækker.







SQL Lead() funktion

Funktionens syntaks er som følger:



LEAD(værdi_udtryk, offset [, standard])
OVER (
[PARTITION BY partition_expression]
BESTIL EFTER sort_udtryk [ASC | DESC]
);

Følgende er de understøttede argumenter:



  1. værdiudtryk – Det angiver returværdien for den foregående række. Udtrykket skal evalueres til en enkelt værdi.
  2. offset – Det angiver, hvor mange rækker frem fra den aktuelle række, der skal tilgås.
  3. Standard – Den indstiller standardværdien, hvis forskydningen er uden for partitionens omfang. Som standard er værdien sat til NULL.
  4. Opdeling af – Det specificerer, hvordan dataene skal partitioneres.
  5. Bestil pr – Den indstiller rækkefølgeformatet for rækkerne i hver partition.

Eksempel på dataopsætning

Før vi dykker ned i funktionen af ​​lead()-funktionen, lad os starte med at opsætte den grundlæggende tabel til demonstrationsformål.





OPRET TABLE produkter (
product_id INT PRIMARY KEY AUTO_INCREMENT,
produktnavn VARCHAR(255),
kategori VARCHAR(255),
pris DECIMAL(10; 2),
mængde INT,
udløbsdato DATE,
stregkode BIGINT
);

indsætte
ind i
produkter (produktnavn,
kategori,
pris,
antal,
udløbsdato,
stregkode)
værdier ('Kokkehat 25cm',
'bageri',
24,67,
57,
'2023-09-09',
2854509564204);

indsætte
ind i
produkter (produktnavn,
kategori,
pris,
antal,
udløbsdato,
stregkode)
værdier ('Vagtelæg - dåse',
'spisekammer',
17,99,
67,
'2023-09-29',
1708039594250);

indsætte
ind i
produkter (produktnavn,
kategori,
pris,
antal,
udløbsdato,
stregkode)
værdier ('Kaffe - Egg Nog Capuccino',
'bageri',
92,53,
10,
'2023-09-22',
8704051853058);

indsætte
ind i
produkter (produktnavn,
kategori,
pris,
antal,
udløbsdato,
stregkode)
værdier ('Pære - stikkende',
'bageri',
65,29,
48,
'2023-08-23',
5174927442238);

indsætte
ind i
produkter (produktnavn,
kategori,
pris,
antal,
udløbsdato,
stregkode)
værdier ('Pasta - Angel Hair',
'spisekammer',
48,38,
59,
'2023-08-05',
8008123704782);

indsætte
ind i
produkter (produktnavn,
kategori,
pris,
antal,
udløbsdato,
stregkode)
værdier ('Vin - Prosecco Valdobiaddene',
'fremstille',
44,18,
3,
'2023-03-13',
6470981735653);

indsætte
ind i
produkter (produktnavn,
kategori,
pris,
antal,
udløbsdato,
stregkode)
værdier ('Brød - Fransk Mini Assorteret',
'spisekammer',
36,73,
52,
'2023-05-29',
5963886298051);

indsætte
ind i
produkter (produktnavn,
kategori,
pris,
antal,
udløbsdato,
stregkode)
værdier ('Orange - dåse, mandarin',
'fremstille',
65,0,
1,
'2023-04-20',
6131761721332);

indsætte
ind i
produkter (produktnavn,
kategori,
pris,
antal,
udløbsdato,
stregkode)
værdier ('Svinekød - Skulder',
'fremstille',
55,55,
73,
'2023-05-01',
9343592107125);

indsætte
ind i
produkter (produktnavn,
kategori,
pris,
antal,
udløbsdato,
stregkode)

værdier ('Dc Hikiage Hira Huba',
'fremstille',
56,29,
53,
'2023-04-14',
3354910667072);

Eksempel 1:

I dette tilfælde har vi adgang til 'produkter'-tabellen, som indeholder produktinformationen. Antag, at vi ønsker at få den næste stregkode fra den aktuelle række.

Vi kan bruge funktionen lead() som følger:



Antag, at vi har en tabel, der indeholder en medarbejderinformation som følger:

Vælg
produktnavn,
pris,
lead(stregkode) over (opdeling efter kategori
bestil efter
pris asc) som næste_vare
fra
produkter p;

Den givne kode opdeler dataene baseret på kategorien. Den henter derefter den næste stregkode i partitionen ved hjælp af lead()-funktionen.

Det resulterende output er som følger:

Eksempel 2:

Hvis der ikke er nogen næste række i en specifik kolonne (uden for grænsen), sætter funktionen værdien til NULL som vist i det foregående eksempel.

For at indstille en standardværdi for enhver adgang uden for området kan vi gøre følgende:

Vælg
produktnavn,
pris,
lead(stregkode, 1, 'N/A') over (opdeling efter kategori
bestil efter
pris asc) som næste_vare
fra
produkter p;

Vi sætter standardværdien til 'N/A'. Dette bør erstatte enhver out-of-bound værdi som vist i følgende output:

BEMÆRK : Indstilling af offset til 1 svarer til ikke at angive nogen værdi.

Eksempel 3:

Antag, at du vil have adgang til de næste to rækker fra den aktuelle række. Det kan vi gøre ved at sætte offsetværdien til 2.

Et eksempel på en forespørgsel er illustreret i det følgende:

Vælg
produktnavn,
pris,
lead(stregkode, 2, 'N/A') over (opdeling efter kategori
bestil efter
pris asc) som næste_vare
fra
produkter p;

Denne forespørgsel returnerer de næste to rækker i hver partition som vist i følgende:

Der har du det!

Konklusion

I denne vejledning lærte vi, hvordan man arbejder med funktionen lead() for at få det næste element fra den aktuelle række.