SQL viivitus

Sql Viivitus



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

See on vastupidine funktsioonile lead(), mis võimaldab juurdepääsu järgmistele ridadele.







SQL Lag()

Funktsiooni süntaks on järgmine:



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

Toetatud argumendid on järgmised:



  • väärtus_avaldis – See määrab eelmise rea tagastusväärtuse. Avaldis peab andma ühe väärtuse.
  • nihe – See määrab, mitu rida praegusest reast tahapoole tuleb juurde pääseda.
  • vaikimisi – See määrab vaikeväärtuse, kui nihe jääb partitsiooni ulatusest välja. Vaikimisi on väärtuseks seatud NULL.
  • Jagamine – See määrab, kuidas andmeid jaotada.
  • Telli järgi – See määrab iga partitsiooni ridade järjestuse vormingu.

Näidisandmete seadistus

Enne kui sukeldume funktsiooni lag() 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 25 cm',
'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);

Kui andmete loomine ja seadistamine on lõpetatud, jätkame mõne näite arutamist.

Näide 1: Põhikasutus

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



Funktsiooni lag() saame kasutada järgmiselt:

vali
tootenimi,
hind,
lag(ribcode) over (jaotis kategooriate järgi
tellida
hind tõusev) nagu eelmine_üks
alates
tooted p;

Antud kood jagab andmed kategooria alusel. Seejärel hangib see partitsiooni eelmise vöötkoodi funktsiooni lag() abil.

Saadud väljund on järgmine:

Näide 2: Vaikeväärtuse määramine

Kui konkreetses veerus pole eelmist rida (piiratud), 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,
lag (ribcode, 1, 'N/A') over (jaotus kategooriate järgi
tellida
hind tõusev) nagu eelmine_üks
alates
tooted p;

Seadsime vaikeväärtuseks “N/A”. See peaks asendama kõik väljundis näidatud piirivälised väärtused:

Näide 3: Kohandatud nihke väärtus

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

Päringu näidet illustreerib järgmine:

vali
tootenimi,
hind,
lag (ribcode, 2, 'N/A') over (jaotis kategooriate järgi
tellida
hind tõusev) nagu eelmine_üks
alates
tooted p;

Väljund:

See päring tagastab iga partitsiooni kaks eelmist rida.

Järeldus

Selles õpetuses õppisime, kuidas töötada funktsiooniga lag(), et saada praegusest reast eelmine üksus.