SQL Lead-funktion

Sql Lead Funktion



Funktionen SQL lead() låter dig komma åt nästa rad från den aktuella raden med en specifik offset. Kort sagt, funktionen lead() låter dig komma åt nästa rad från den nuvarande. Genom att ange offsetvärdet kan du komma åt nästa 1, 2, 3, etc. rader från den nuvarande.

Det är motsatsen till lag()-funktionen som låter dig komma åt föregående rader.







SQL Lead() Funktion

Funktionens syntax är som följer:



LEAD(värdeuttryck, offset [, standard])
ÖVER (
[PARTITION BY partition_expression]
ORDER BY sort_expression [ASC | DESC]
);

Följande är de argument som stöds:



  1. värde_uttryck – Den anger returvärdet för föregående rad. Uttrycket måste utvärderas till ett enda värde.
  2. offset – Den anger hur många rader framåt från den aktuella raden som ska komma åt.
  3. standard – Den ställer in standardvärdet om förskjutningen ligger utanför partitionens omfång. Som standard är värdet satt till NULL.
  4. Partition av – Den anger hur data ska partitioneras.
  5. Sortera efter – Den ställer in ordningsformatet för raderna i varje partition.

Exempel på datainställning

Innan vi dyker in i hur lead()-funktionen fungerar, låt oss börja med att ställa in den grundläggande tabellen för demonstrationsändamål.





CREATE TABLE-produkter (
product_id INT PRIMARY KEY AUTO_INCREMENT,
produktnamn VARCHAR(255),
kategori VARCHAR(255),
pris DECIMAL(10; 2),
kvantitet INT,
expiration_date DATE,
streckkod BIGINT
);

Föra in
in i
produkter (produktnamn,
kategori,
pris,
kvantitet,
utgångsdatum,
streckkod)
värden ('Kockmössa 25cm',
'bageri',
24,67,
57,
'2023-09-09',
2854509564204);

Föra in
in i
produkter (produktnamn,
kategori,
pris,
kvantitet,
utgångsdatum,
streckkod)
värden ('Vaktelägg - konserverade',
'skafferi',
17,99,
67,
'2023-09-29',
1708039594250);

Föra in
in i
produkter (produktnamn,
kategori,
pris,
kvantitet,
utgångsdatum,
streckkod)
värden ('Kaffe - Egg Nog Capuccino',
'bageri',
92,53,
10,
'2023-09-22',
8704051853058);

Föra in
in i
produkter (produktnamn,
kategori,
pris,
kvantitet,
utgångsdatum,
streckkod)
värden ('Pear - Prickly',
'bageri',
65,29,
48,
'2023-08-23',
5174927442238);

Föra in
in i
produkter (produktnamn,
kategori,
pris,
kvantitet,
utgångsdatum,
streckkod)
värden ('Pasta - Angel Hair',
'skafferi',
48,38,
59,
'2023-08-05',
8008123704782);

Föra in
in i
produkter (produktnamn,
kategori,
pris,
kvantitet,
utgångsdatum,
streckkod)
värden ('Vin - Prosecco Valdobiaddene',
'producera',
44,18,
3,
'2023-03-13',
6470981735653);

Föra in
in i
produkter (produktnamn,
kategori,
pris,
kvantitet,
utgångsdatum,
streckkod)
värden ('Pastry - French Mini Assorted',
'skafferi',
36,73,
52,
'2023-05-29',
5963886298051);

Föra in
in i
produkter (produktnamn,
kategori,
pris,
kvantitet,
utgångsdatum,
streckkod)
värden ('Orange - konserverad, mandarin',
'producera',
65,0,
1,
'2023-04-20',
6131761721332);

Föra in
in i
produkter (produktnamn,
kategori,
pris,
kvantitet,
utgångsdatum,
streckkod)
värden ('Fläsk - Axel',
'producera',
55,55,
73,
'2023-05-01',
9343592107125);

Föra in
in i
produkter (produktnamn,
kategori,
pris,
kvantitet,
utgångsdatum,
streckkod)

värden ('Dc Hikiage Hira Huba',
'producera',
56,29,
53,
'2023-04-14',
3354910667072);

Exempel 1:

I det här fallet har vi tillgång till 'produkter'-tabellen som innehåller produktinformationen. Anta att vi vill få nästa streckkod från den aktuella raden.

Vi kan använda funktionen lead() enligt följande:



Anta att vi har en tabell som innehåller en anställd information enligt följande:

Välj
produktnamn,
pris,
bly(streckkod) över (uppdelning efter kategori
sortera efter
pris asc) som nästa_artikel
från
produkter p;

Den givna koden delar upp data baserat på kategorin. Den hämtar sedan nästa streckkod i partitionen med hjälp av funktionen lead().

Resultatet är som följer:

Exempel 2:

Om det inte finns någon nästa rad i en specifik kolumn (utanför gränsen), sätter funktionen värdet till NULL som visas i föregående exempel.

För att ställa in ett standardvärde för åtkomst utanför omfattningen kan vi göra följande:

Välj
produktnamn,
pris,
lead(streckkod, 1, 'N/A') över (partition efter kategori
sortera efter
pris asc) som nästa_artikel
från
produkter p;

Vi sätter standardvärdet till 'N/A'. Detta bör ersätta alla out-of-bound värden som visas i följande utdata:

NOTERA : Att ställa in offset till 1 liknar att inte specificera något värde.

Exempel 3:

Anta att du vill komma åt nästa två rader från den aktuella raden. Vi kan göra det genom att sätta offsetvärdet till 2.

Ett exempel på en fråga illustreras i följande:

Välj
produktnamn,
pris,
lead(streckkod, 2, 'N/A') över (partition efter kategori
sortera efter
pris asc) som nästa_artikel
från
produkter p;

Den här frågan returnerar de nästa två raderna i varje partition som visas i följande:

Där har du det!

Slutsats

I den här handledningen lärde vi oss hur man arbetar med funktionen lead() för att hämta nästa objekt från den aktuella raden.