logo

SQL LAG() funkcija

SQL LAG() funkcija yra lango funkcija, suteikianti prieigą prie eilutės su nurodytu fiziniu poslinkiu, kuris yra prieš dabartinę eilutę .

VVG funkcija SQL serveryje turi įprotį palyginkite dabartinės eilutės reikšmes su vertėmis iš ankstesnės eilutės.



Sintaksė

The VVG funkcijos sintaksė yra:

.LAG (skaliarinė_išraiška [, poslinkis [, numatytasis ]]) OVER ( [ partition_by_clause ] order_by_clause )

Kur :



  • skaliarinė išraiška – Reikšmė, kurią reikia grąžinti pagal nurodytą poslinkį.
  • kompensuoti – Eilučių skaičius nuo dabartinės eilutės, iš kurios reikia gauti vertę. Jei nenurodyta, numatytoji vertė yra 1.
  • numatytas - numatytasis yra reikšmė, kurią reikia grąžinti, jei poslinkis viršija skaidinio apimtį. Jei numatytoji reikšmė nenurodyta, grąžinama NULL.
  • partition_by_cllause: Neprivaloma sąlyga, kuri padalija rezultatų rinkinį į skaidinius. Funkcija LAG() taikoma kiekvienam skaidiniui atskirai.
  • order_by_lause: Eilučių tvarka kiekvienoje skaidinyje. Tai privaloma ir turi būti nurodyta.

SQL LAG() funkcijos pavyzdys

Pažvelkime į keletą SQL VVG funkcijos pavyzdžių ir suprasime, kaip naudoti VVG funkciją SQL serveryje.

1 pavyzdys

  SELECT   Organisation, [Year], Revenue,   LAG   (Revenue, 1, 0)    OVER   (  PARTITION BY   Organisation   ORDER BY   [Year])   AS   PrevYearRevenue    FROM   Org    ORDER BY   Organisation, [Year];>

Išvestis:

Organizacija Metai Pajamos Ankstesnių metų pajamos
ABCD naujienos 2013 m 440 000 0
ABCD naujienos 2014 m 480 000 440 000
ABCD naujienos 2015 m 490 000 480 000
ABCD naujienos 2016 m 500 000 490 000
ABCD naujienos 2017 m 520 000 500 000
ABCD naujienos 2018 m 525 000 520 000
ABCD naujienos 2019 m 540 000 525 000
ABCD naujienos 2020 m 550 000 540 000
Z naujienos 2016 m 720 000 0
Z naujienos 2017 m 750 000 720 000
Z naujienos 2018 m 780 000 750 000
Z naujienos 2019 m 880 000 780 000
Z naujienos 2020 m 910 000 880 000

Anksčiau pateiktame pavyzdyje turime 2 TV naujienų kanalus, kurių dabartinės ir praėjusių metų pajamos pateikiamos toje pačioje eilutėje naudojant VVG() funkciją. Kaip matote, pats pirmasis kiekvieno TV naujienų kanalo įrašas neturi ankstesnių metų pajamų, todėl jame rodoma numatytoji reikšmė 0. Ši funkcija gali būti labai naudinga teikiant duomenis BI ataskaitoms, kai norite palyginti vertes. nuosekliais laikotarpiais, pvz. Metų iš metų arba ketvirčio arba dienos palyginimai.



2 pavyzdys

  SELECT   Z.*, (Z.Revenue - z.PrevYearRevenue) as YearonYearGrowth   FROM   (SELECT Organisation, [Year], Revenue,    LAG   (Revenue, 1)     OVER   (  PARTITION BY   Organisation   ORDER BY   [Year] )   AS   PrevYearRevenue     FROM   Org) Z   ORDER BY   Organisation, [Year];>

Išvestis:

Organizacija Metai Pajamos Ankstesnių metų pajamos MetaiOnYearGrowth
ABCD naujienos 2013 m 440 000 NULL NULL
ABCD naujienos 2014 m 480 000 440 000 40 000
ABCD naujienos 2015 m 490 000 480 000 10 000
ABCD naujienos 2016 m 500 000 490 000 10 000
ABCD naujienos 2017 m 520 000 500 000 20 000
ABCD naujienos 2018 m 525 000 520 000 5000
ABCD naujienos 2019 m 540 000 525 000 15 000
ABCD naujienos 2020 m 550 000 540 000 10 000
Z naujienos 2016 m 720 000 NULL NULL
Z naujienos 2017 m 750 000 720 000 30 000
Z naujienos 2018 m 780 000 750 000 30 000
Z naujienos 2019 m 880 000 780 000 100 000
Z naujienos 2020 m 910 000 880 000 30 000

Aukščiau pateiktame pavyzdyje galime panašiai apskaičiuoti TV naujienų kanalo augimą per metus. Be to, šiame pavyzdyje reikia atkreipti dėmesį į tai, kad mes nepateikėme jokio numatytojo parametro LAG(), todėl funkcija LAG() grąžina NULL, jei nėra ankstesnių reikšmių. Funkciją VVG() galima įdiegti duomenų bazės lygiu, o BI ataskaitų teikimo sprendimai, tokie kaip „Power BI“ ir „Tableau“, gali išvengti sudėtingų priemonių naudojimo ataskaitų teikimo lygyje.

Svarbūs dalykai apie SQL VVG() funkciją

  • Funkcija SQL LAG() yra lango funkcija, leidžianti vartotojams pasiekti duomenis iš ankstesnių duomenų rinkinio eilučių.
  • Tai leidžia vartotojams palyginti dabartinių eilučių reikšmes su ankstesnių eilučių reikšmėmis, ypač susijusiomis su laiku arba konkrečiais stulpeliais.
  • Funkcija VVG() yra vertinga analizuojant pokyčius laikui bėgant, pvz., akcijų rinkos duomenis, dienos tendencijas ir pokyčius keliuose stulpeliuose.