SQL-i juhtfunktsioon

Sql I Juhtfunktsioon



Funktsioon SQL lead() võimaldab teil konkreetse nihkega praegusest reast järgmisele reale juurde pääseda. Lühidalt, funktsioon lead() võimaldab teil pääseda praegusest reast järgmisele reale. Nihkeväärtuse määramisel pääsete juurde praegusest järgmistele 1, 2, 3 jne ridadele.

See on vastupidine funktsioonile lag(), mis võimaldab juurdepääsu eelmistele ridadele.







SQL Lead() funktsioon

Funktsiooni süntaks on järgmine:



LEAD(väärtuse_avaldis, nihe [, vaikimisi])
LÄBI (
[PARTITSIOON partitsiooniavaldise järgi]
ORDER BY sorti_avaldise järgi [ASC | DESC]
);

Toetatud argumendid on järgmised:



  1. väärtus_avaldis – See määrab eelmise rea tagastusväärtuse. Avaldis peab andma ühe väärtuse.
  2. nihe – See määrab, mitu rida praegusest reast edasi pääseb.
  3. vaikimisi – See määrab vaikeväärtuse, kui nihe jääb partitsiooni ulatusest välja. Vaikimisi on väärtuseks seatud NULL.
  4. Jagamine – See määrab, kuidas andmeid jaotada.
  5. Telli järgi – See määrab iga partitsiooni ridade järjestuse vormingu.

Andmete seadistuse näidis

Enne kui sukeldume funktsiooni lead() töösse, alustame tutvustamise eesmärgil põhitabeli seadistamisega.





CREATE TABLE tooted (
product_id INT PRIMARY KEY AUTO_INCREMENT,
toote_nimi VARCHAR(255),
kategooria VARCHAR(255),
hind DECIMAAL(10, 2),
kogus INT,
expiration_date DATE,
vöötkood BIGINT
);

sisestada
sisse
tooted (toote_nimi,
kategooria,
hind,
kogus,
expiration_date,
vöötkood)
väärtused ('koka müts 25cm',
'pagariäri',
24.67,
57,
'2023-09-09',
2854509564204);

sisestada
sisse
tooted (toote_nimi,
kategooria,
hind,
kogus,
expiration_date,
vöötkood)
väärtused ('vutimunad – konserveeritud',
'sahver',
17.99,
67,
'2023-09-29',
1708039594250);

sisestada
sisse
tooted (toote_nimi,
kategooria,
hind,
kogus,
expiration_date,
vöötkood)
väärtused ('Kohv - munanoog capuccino',
'pagariäri',
92.53,
10,
'2023-09-22',
8704051853058);

sisestada
sisse
tooted (toote_nimi,
kategooria,
hind,
kogus,
expiration_date,
vöötkood)
väärtused ('Pear – Prickly',
'pagariäri',
65.29,
48,
'2023-08-23',
5174927442238);

sisestada
sisse
tooted (toote_nimi,
kategooria,
hind,
kogus,
expiration_date,
vöötkood)
väärtused ('Pasta - Angel Hair',
'sahver',
48.38,
59,
'2023-08-05',
8008123704782);

sisestada
sisse
tooted (toote_nimi,
kategooria,
hind,
kogus,
expiration_date,
vöötkood)
väärtused ('Vein – Prosecco Valdobiaddene',
'tootma',
44.18,
3,
'2023-03-13',
6470981735653);

sisestada
sisse
tooted (toote_nimi,
kategooria,
hind,
kogus,
expiration_date,
vöötkood)
väärtused ('Kondiitritooted – Prantsuse miniassortii',
'sahver',
36,73,
52,
'2023-05-29',
5963886298051);

sisestada
sisse
tooted (toote_nimi,
kategooria,
hind,
kogus,
expiration_date,
vöötkood)
väärtused ('oranž – konserveeritud, mandariin',
'tootma',
65,0,
1,
'2023-04-20',
6131761721332);

sisestada
sisse
tooted (toote_nimi,
kategooria,
hind,
kogus,
expiration_date,
vöötkood)
väärtused ('Sealiha - abatükk',
'tootma',
55.55,
73,
'2023-05-01',
9343592107125);

sisestada
sisse
tooted (toote_nimi,
kategooria,
hind,
kogus,
expiration_date,
vöötkood)

väärtused ('Dc Hikiage Hira Huba',
'tootma',
56.29,
53,
'2023-04-14',
3354910667072);

Näide 1:

Sel juhul on meil juurdepääs tabelile 'tooted', mis sisaldab tooteteavet. Oletame, et tahame saada praegusest reast järgmise vöötkoodi.

Funktsiooni lead() saame kasutada järgmiselt:



Oletame, et meil on tabel, mis sisaldab järgmist teavet töötaja kohta:

vali
tootenimi,
hind,
plii(ribcode) over (jaotis kategooria järgi
tellida
hind tõusev) kui järgmine_üksus
alates
tooted p;

Antud kood jagab andmed kategooria alusel. Seejärel hangib see partitsiooni järgmise vöötkoodi, kasutades funktsiooni lead().

Saadud väljund on järgmine:

Näide 2:

Kui konkreetses veerus ei ole järgmist rida (piiratud väljaspool), määrab funktsioon väärtuseks NULL, nagu on näidatud eelmises näites.

Ulatusvälise juurdepääsu vaikeväärtuse määramiseks saame teha järgmist.

vali
tootenimi,
hind,
plii(ribkood, 1, 'N/A') over (jaotis kategooria järgi
tellida
hind tõusev) kui järgmine_üksus
alates
tooted p;

Seadsime vaikeväärtuseks “N/A”. See peaks asendama kõik piirist väljas olevad väärtused, nagu on näidatud järgmises väljundis:

MÄRGE : nihke määramine väärtusele 1 sarnaneb väärtuse määramata jätmisega.

Näide 3:

Oletame, et soovite praegusest reast pääseda juurde kahele järgmisele reale. Seda saame teha, määrates nihke väärtuseks 2.

Päringu näidet illustreerib järgmine:

vali
tootenimi,
hind,
plii(ribcode, 2, 'N/A') over (jaotis kategooriate järgi
tellida
hind tõusev) kui järgmine_üksus
alates
tooted p;

See päring tagastab iga partitsiooni kaks järgmist rida, nagu on näidatud järgmises:

Siin on see!

Järeldus

Selles õpetuses õppisime, kuidas töötada funktsiooni lead() abil, et saada praegusest reast järgmine üksus.