SQL Lead funksjon

Sql Lead Funksjon



SQL lead()-funksjonen lar deg få tilgang til neste rad fra gjeldende rad med en bestemt forskyvning. Kort sagt lar lead()-funksjonen deg få tilgang til neste rad fra den gjeldende. Ved å spesifisere forskyvningsverdien kan du få tilgang til de neste 1, 2, 3, osv. radene fra den gjeldende.

Det er det motsatte av lag()-funksjonen som lar deg få tilgang til de forrige radene.







SQL Lead() funksjon

Funksjonssyntaksen er som følger:



LEAD(verdiuttrykk, offset [, standard])
OVER (
[PARTITION BY partition_expression]
ORDER BY sort_expression [ASC | DESC]
);

Følgende er argumentene som støttes:



  1. verdiuttrykk – Den spesifiserer returverdien til den foregående raden. Uttrykket må evalueres til én enkelt verdi.
  2. offset – Den spesifiserer hvor mange rader fremover fra gjeldende rad for å få tilgang.
  3. misligholde – Den angir standardverdien hvis forskyvningen er utenfor omfanget av partisjonen. Som standard er verdien satt til NULL.
  4. Deling av – Den spesifiserer hvordan dataene skal partisjoneres.
  5. Rekkefølge etter – Den angir rekkefølgeformatet for radene i hver partisjon.

Eksempel på dataoppsett

Før vi dykker inn i hvordan lead()-funksjonen fungerer, la oss starte med å sette opp den grunnleggende tabellen for demonstrasjonsformål.





CREATE TABLE-produkter (
product_id INT PRIMARY KEY AUTO_INCREMENT,
produktnavn VARCHAR(255),
kategori VARCHAR(255),
pris DESIMAL(10; 2);
mengde INT,
expiration_date DATE,
strekkode BIGINT
);

sett inn
inn i
produkter (produktnavn,
kategori,
pris,
mengde,
utløpsdato,
strekkode)
verdier ('Kokkhatt 25cm',
'bakeri',
24,67,
57,
'2023-09-09',
2854509564204);

sett inn
inn i
produkter (produktnavn,
kategori,
pris,
mengde,
utløpsdato,
strekkode)
verdier ('Vaktelegg - hermetikk',
'spiskammers',
17,99,
67,
'2023-09-29',
1708039594250);

sett inn
inn i
produkter (produktnavn,
kategori,
pris,
mengde,
utløpsdato,
strekkode)
verdier ('Kaffe - Egg Nog Capuccino',
'bakeri',
92,53,
10,
'2023-09-22',
8704051853058);

sett inn
inn i
produkter (produktnavn,
kategori,
pris,
mengde,
utløpsdato,
strekkode)
verdier ('Pære - stikkende',
'bakeri',
65,29,
48,
'2023-08-23',
5174927442238);

sett inn
inn i
produkter (produktnavn,
kategori,
pris,
mengde,
utløpsdato,
strekkode)
verdier ('Pasta - Angel Hair',
'spiskammers',
48,38,
59,
'2023-08-05',
8008123704782);

sett inn
inn i
produkter (produktnavn,
kategori,
pris,
mengde,
utløpsdato,
strekkode)
verdier ('Vin - Prosecco Valdobiaddene',
'produsere',
44,18,
3,
'2023-03-13',
6470981735653);

sett inn
inn i
produkter (produktnavn,
kategori,
pris,
mengde,
utløpsdato,
strekkode)
verdier ('Pastry - French Mini Assorted',
'spiskammers',
36,73,
52,
'2023-05-29',
5963886298051);

sett inn
inn i
produkter (produktnavn,
kategori,
pris,
mengde,
utløpsdato,
strekkode)
verdier ('Oransje - Hermetikk, Mandarin',
'produsere',
65,0,
1,
'2023-04-20',
6131761721332);

sett inn
inn i
produkter (produktnavn,
kategori,
pris,
mengde,
utløpsdato,
strekkode)
verdier ('Svinekjøtt - Skulder',
'produsere',
55,55,
73,
'2023-05-01',
9343592107125);

sett inn
inn i
produkter (produktnavn,
kategori,
pris,
mengde,
utløpsdato,
strekkode)

verdier ('Dc Hikiage Hira Huba',
'produsere',
56,29,
53,
'2023-04-14',
3354910667072);

Eksempel 1:

I dette tilfellet har vi tilgang til 'produkter'-tabellen som inneholder produktinformasjonen. Anta at vi ønsker å få neste strekkode fra gjeldende rad.

Vi kan bruke lead()-funksjonen som følger:



Anta at vi har en tabell som inneholder en ansattinformasjon som følger:

plukke ut
Produktnavn,
pris,
bly(strekkode) over (partisjon etter kategori
rekkefølge etter
pris asc) som neste_vare
fra
produkter p;

Den gitte koden deler opp dataene basert på kategorien. Den henter deretter neste strekkode i partisjonen ved å bruke lead()-funksjonen.

Den resulterende utgangen er som følger:

Eksempel 2:

Hvis det ikke er noen neste rad i en bestemt kolonne (utenfor grensen), setter funksjonen verdien til NULL som vist i forrige eksempel.

For å angi en standardverdi for tilgang utenfor omfanget, kan vi gjøre følgende:

plukke ut
Produktnavn,
pris,
lead(strekkode, 1, 'N/A') over (partisjon etter kategori
rekkefølge etter
pris asc) som neste_vare
fra
produkter p;

Vi setter standardverdien til 'N/A'. Dette bør erstatte enhver verdi utenfor grensen som vist i følgende utdata:

MERK : Å sette offset til 1 ligner på å ikke spesifisere noen verdi.

Eksempel 3:

Anta at du vil ha tilgang til de to neste radene fra gjeldende rad. Vi kan gjøre det ved å sette offsetverdien til 2.

Et eksempelspørsmål er illustrert i følgende:

plukke ut
Produktnavn,
pris,
lead(strekkode, 2, 'N/A') over (partisjon etter kategori
rekkefølge etter
pris asc) som neste_vare
fra
produkter p;

Denne spørringen returnerer de neste to radene i hver partisjon som vist i følgende:

Der har du det!

Konklusjon

I denne opplæringen lærte vi hvordan du arbeider med lead()-funksjonen for å hente neste element fra gjeldende rad.