SQL-viive

Sql Viive



SQL lag()-funktion avulla voit käyttää edellistä riviä nykyiseltä riviltä tietyllä siirrolla. Lyhyesti sanottuna lag()-funktio mahdollistaa pääsyn edelliselle riville nykyisestä rivistä. Määrittämällä offset-arvon pääset nykyisestä rivistä edellisiin 1, 2, 3 jne. riviin.

Se on vastakohta lead()-funktiolle, jonka avulla voit käyttää seuraavia rivejä.







SQL Lag()

Funktioiden syntaksi on seuraava:



LAG(arvon_lauseke, offset [, oletus])
OVER (
[OSIO OSIO-lausekkeen mukaan]
ORDER BY sort_expression [ASC | DESC]
);

Seuraavat ovat tuetut argumentit:



  • arvo_lauseke – Se määrittää edellisen rivin palautusarvon. Lausekkeen on arvioitava yksi arvo.
  • offset – Se määrittää, kuinka monta riviä taaksepäin nykyisestä rivistä pääsee käsiksi.
  • oletuksena – Se asettaa oletusarvon, jos siirtymä ei kuulu osion piiriin. Oletuksena arvo on NULL.
  • Osio tekijä – Se määrittää, kuinka tiedot osioidaan.
  • Tilaa mukaan – Se määrittää kunkin osion rivien järjestysmuodon.

Esimerkkitietojen määritys

Ennen kuin sukeltaamme lag()-funktion toimintaan, aloitetaan perustamalla perustaulukko esittelytarkoituksiin.





CREATE TABLE tuotteet (
product_id INT PRIMARY KEY AUTO_INCREMENT,
tuotteen_nimi VARCHAR(255),
luokka VARCHAR(255),
hinta DECIMAL(10, 2),
määrä INT,
expiration_date DATE,
viivakoodi BIGINT
);

lisää
sisään
tuotteet (tuotteen_nimi,
kategoria,
hinta,
määrä,
viimeinen käyttöpäivä,
viivakoodi)
arvot ('Chef Hat 25cm',
'leipomo',
24.67,
57,
'2023-09-09',
2854509564204);

lisää
sisään
tuotteet (tuotteen_nimi,
kategoria,
hinta,
määrä,
viimeinen käyttöpäivä,
viivakoodi)
arvot ('viiriäisten munat - purkitettu',
'ruokakomero',
17.99,
67,
'2023-09-29',
1708039594250);

lisää
sisään
tuotteet (tuotteen_nimi,
kategoria,
hinta,
määrä,
viimeinen käyttöpäivä,
viivakoodi)
arvot ('Kahvi - Egg Nog Capuccino',
'leipomo',
92,53,
10,
'2023-09-22',
8704051853058);

lisää
sisään
tuotteet (tuotteen_nimi,
kategoria,
hinta,
määrä,
viimeinen käyttöpäivä,
viivakoodi)
arvot ('Pear - Prickly',
'leipomo',
65,29,
48,
'2023-08-23',
5174927442238);

lisää
sisään
tuotteet (tuotteen_nimi,
kategoria,
hinta,
määrä,
viimeinen käyttöpäivä,
viivakoodi)
arvot ('Pasta - Angel Hair',
'ruokakomero',
48,38,
59,
'2023-08-05',
8008123704782);

lisää
sisään
tuotteet (tuotteen_nimi,
kategoria,
hinta,
määrä,
viimeinen käyttöpäivä,
viivakoodi)
arvot ('Viini - Prosecco Valdobiaddene',
'tuottaa',
44.18,
3,
'2023-03-13',
6470981735653);

lisää
sisään
tuotteet (tuotteen_nimi,
kategoria,
hinta,
määrä,
viimeinen käyttöpäivä,
viivakoodi)
arvot ('Leivonnaiset - ranskalainen minivalikoima',
'ruokakomero',
36,73,
52,
'2023-05-29',
5963886298051);

lisää
sisään
tuotteet (tuotteen_nimi,
kategoria,
hinta,
määrä,
viimeinen käyttöpäivä,
viivakoodi)
arvot ('oranssi - purkitettu, mandariini',
'tuottaa',
65,0,
1,
'2023-04-20',
6131761721332);

lisää
sisään
tuotteet (tuotteen_nimi,
kategoria,
hinta,
määrä,
viimeinen käyttöpäivä,
viivakoodi)
arvot ('Sianliha - lapa',
'tuottaa',
55.55,
73,
'2023-05-01',
9343592107125);

lisää
sisään
tuotteet (tuotteen_nimi,
kategoria,
hinta,
määrä,
viimeinen käyttöpäivä,
viivakoodi)
arvot ('Dc Hikiage Hira Huba',
'tuottaa',
56.29,
53,
'2023-04-14',
3354910667072);

Kun tietojen luominen ja asetukset on tehty, siirrytään käsittelemään muutamia esimerkkejä.

Esimerkki 1: Peruskäyttö

Tässä tapauksessa meillä on pääsy 'tuotteet' -taulukkoon, joka sisältää tuotetiedot. Oletetaan, että haluamme saada edellisen viivakoodin nykyiseltä riviltä.



Voimme käyttää lag()-funktiota seuraavasti:

valitse
tuotteen nimi,
hinta,
viive (viivakoodi) yli (osio luokan mukaan
tilata mennessä
hinta asc) kuten edellinen_tuote
alkaen
tuotteet p;

Annettu koodi osittaa tiedot luokan perusteella. Sitten se hakee osion edellisen viivakoodin käyttämällä lag()-funktiota.

Tuloksena oleva tulos on seuraava:

Esimerkki 2: Oletusarvon asettaminen

Jos tietyssä sarakkeessa ei ole edellistä riviä (rajoituksen ulkopuolella), funktio asettaa arvoksi NULL, kuten edellisessä esimerkissä on esitetty.

Voit määrittää oletusarvon kaikelle soveltamisalan ulkopuoliselle käytölle seuraavasti:

valitse
tuotteen nimi,
hinta,
viive (viivakoodi, 1, 'N/A') yli (osio luokan mukaan
tilata mennessä
hinta asc) kuten edellinen_tuote
alkaen
tuotteet p;

Asetamme oletusarvoksi 'N/A'. Tämän pitäisi korvata kaikki ulkopuoliset arvot tulosteen mukaisesti:

Esimerkki 3: Mukautettu offset-arvo

Oletetaan, että haluat käyttää kahta edellistä riviä nykyiseltä riviltä. Voimme tehdä sen asettamalla offset-arvoksi 2.

Esimerkki kyselystä on kuvattu seuraavassa:

valitse
tuotteen nimi,
hinta,
viive (viivakoodi, 2, 'N/A') yli (osio luokan mukaan
tilata mennessä
hinta asc) kuten edellinen_tuote
alkaen
tuotteet p;

Lähtö:

Tämä kysely palauttaa kunkin osion kaksi edellistä riviä.

Johtopäätös

Tässä opetusohjelmassa opimme työskentelemään lag()-funktion kanssa saadaksesi edellisen kohteen nykyiseltä riviltä.