SQL vadošā funkcija

Sql Vadosa Funkcija



Funkcija SQL lead() ļauj piekļūt nākamajai rindai no pašreizējās rindas ar noteiktu nobīdi. Īsāk sakot, funkcija lead() ļauj piekļūt nākamajai rindai no pašreizējās. Norādot nobīdes vērtību, jūs varat piekļūt nākamajām 1, 2, 3 utt. rindām no pašreizējās.

Tas ir pretējs funkcijai lag(), kas ļauj piekļūt iepriekšējām rindām.







SQL Lead() funkcija

Funkcijas sintakse ir šāda:



LEAD(vērtības_izteiksme, nobīde [, noklusējuma])
OVER (
[PARTITION BY partition_expression]
ORDER BY sort_expression [ASC | DESC]
);

Atbalstītie argumenti ir šādi:



  1. vērtības_izteiksme – Tas norāda iepriekšējās rindas atgriešanas vērtību. Izteiksmei ir jānovērtē viena vērtība.
  2. kompensēt – Tas norāda, cik rindu uz priekšu no pašreizējās rindas, lai piekļūtu.
  3. noklusējuma – Tas nosaka noklusējuma vērtību, ja nobīde ir ārpus nodalījuma darbības jomas. Pēc noklusējuma vērtība ir iestatīta uz NULL.
  4. Sadalījums pēc – Tas norāda, kā sadalīt datus.
  5. Sakārtot pēc – Tas nosaka katra nodalījuma rindu secības formātu.

Datu iestatīšanas paraugs

Pirms iedziļināties funkcijas lead() darbībā, sāksim ar pamata tabulas iestatīšanu demonstrācijas nolūkos.





CREATE TABLE produkti (
product_id INT PRIMARY KEY AUTO_INCREMENT,
produkta_nosaukums VARCHAR(255),
kategorija VARCHAR(255),
cena DECIMAL(10, 2),
daudzums INT,
expiration_date DATE,
svītrkods BIGINT
);

ievietot
iekšā
produkti (produkta_nosaukums,
kategorija,
cena,
daudzums,
derīguma termiņš,
svītrkods)
vērtības ('Pavāra cepure 25 cm',
'maizes ceptuve',
24.67,
57,
“2023-09-09”,
2854509564204);

ievietot
iekšā
produkti (produkta_nosaukums,
kategorija,
cena,
daudzums,
derīguma termiņš,
svītrkods)
vērtības ('Paipalu olas — konservētas',
'pieliekamais',
17.99,
67,
“2023-09-29”,
1708039594250);

ievietot
iekšā
produkti (produkta_nosaukums,
kategorija,
cena,
daudzums,
derīguma termiņš,
svītrkods)
vērtības (“Kafija – olu nog kapučīno”,
'maizes ceptuve',
92,53,
10,
“2023-09-22”,
8704051853058);

ievietot
iekšā
produkti (produkta_nosaukums,
kategorija,
cena,
daudzums,
derīguma termiņš,
svītrkods)
vērtības ('bumbieris - dzeloņplūsmas',
'maizes ceptuve',
65,29,
48,
“2023-08-23”,
5174927442238);

ievietot
iekšā
produkti (produkta_nosaukums,
kategorija,
cena,
daudzums,
derīguma termiņš,
svītrkods)
vērtības ('Makaroni - eņģeļu mati',
'pieliekamais',
48,38,
59,
“2023-08-05”,
8008123704782);

ievietot
iekšā
produkti (produkta_nosaukums,
kategorija,
cena,
daudzums,
derīguma termiņš,
svītrkods)
vērtības ('Vīns - Prosecco Valdobiaddene',
'ražot',
44.18,
3,
“2023-03-13”,
6470981735653);

ievietot
iekšā
produkti (produkta_nosaukums,
kategorija,
cena,
daudzums,
derīguma termiņš,
svītrkods)
vērtības ('Konditorejas izstrādājumi - franču mini asorti',
'pieliekamais',
36,73,
52,
“2023-05-29”,
5963886298051);

ievietot
iekšā
produkti (produkta_nosaukums,
kategorija,
cena,
daudzums,
derīguma termiņš,
svītrkods)
vērtības ('oranžs - konservēts, mandarīns',
'ražot',
65,0,
1,
“2023-04-20”,
6131761721332);

ievietot
iekšā
produkti (produkta_nosaukums,
kategorija,
cena,
daudzums,
derīguma termiņš,
svītrkods)
vērtības ('Cūkgaļa - plecs',
'ražot',
55,55,
73,
“2023-05-01”,
9343592107125);

ievietot
iekšā
produkti (produkta_nosaukums,
kategorija,
cena,
daudzums,
derīguma termiņš,
svītrkods)

vērtības ('Dc Hikiage Hira Huba',
'ražot',
56.29,
53,
“2023-04-14”,
3354910667072);

1. piemērs:

Šajā gadījumā mums ir pieeja “produktu” tabulai, kurā ir informācija par produktu. Pieņemsim, ka mēs vēlamies iegūt nākamo svītrkodu no pašreizējās rindas.

Funkciju lead () mēs varam izmantot šādi:



Pieņemsim, ka mums ir tabula, kurā ir šāda informācija par darbinieku:

izvēlieties
produkta nosaukums,
cena,
svina(svītrkods) pār (sadaļa pēc kategorijas
sakārtot pēc
cena asc) kā next_item
no
produkti p;

Dotais kods sadala datus, pamatojoties uz kategoriju. Pēc tam tas ienes nodalījumā nākamo svītrkodu, izmantojot funkciju lead().

Rezultātā iegūtais rezultāts ir šāds:

2. piemērs:

Ja noteiktā kolonnā nav nākamās rindas (ārpus ierobežojuma), funkcija iestata vērtību uz NULL, kā parādīts iepriekšējā piemērā.

Lai iestatītu noklusējuma vērtību jebkurai ārpus darbības jomas piekļuvei, mēs varam rīkoties šādi:

izvēlieties
produkta nosaukums,
cena,
svins (svītrkods, 1, 'N/A') over (sadalījums pēc kategorijas
sakārtot pēc
cena asc) kā next_item
no
produkti p;

Mēs iestatījām noklusējuma vērtību uz “N/A”. Tam ir jāaizstāj jebkura ārpuses vērtība, kā parādīts šajā izvadē:

PIEZĪME : Nobīdes iestatīšana uz 1 ir līdzīga vērtības nenorādīšanai.

3. piemērs:

Pieņemsim, ka vēlaties piekļūt nākamajām divām rindām no pašreizējās rindas. Mēs to varam izdarīt, iestatot nobīdes vērtību uz 2.

Vaicājuma piemērs ir parādīts tālāk norādītajā attēlā.

izvēlieties
produkta nosaukums,
cena,
svins (svītrkods, 2, 'N/A') over (sadalījums pēc kategorijas
sakārtot pēc
cena asc) kā next_item
no
produkti p;

Šis vaicājums atgriež nākamās divas rindas katrā nodalījumā, kā parādīts tālāk:

Tur jums tas ir!

Secinājums

Šajā apmācībā mēs uzzinājām, kā strādāt ar funkciju lead(), lai iegūtu nākamo vienumu no pašreizējās rindas.