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.