SQL LAG() funkcija ir loga funkcija, kas nodrošina piekļuvi rindai ar noteiktu fizisko nobīdi, kas ir pirms pašreizējās rindas .
VVG funkcija SQL serverī ir pieradis salīdziniet pašreizējās rindas vērtības ar vērtībām no iepriekšējās rindas.
Sintakse
The VRG funkcijas sintakse ir:
.LAG (skalārā_izteiksme [, nobīde [, noklusējuma ]]) OVER ( [ partition_by_clause ] order_by_clause )
Kur :
- skalāra_izteiksme — Vērtība, kas jāatgriež, pamatojoties uz norādīto nobīdi.
- nobīde – Rindu skaits, kas atrodas atpakaļ no pašreizējās rindas, no kurām iegūt vērtību. Ja nav norādīts, noklusējuma vērtība ir 1.
- noklusējuma - noklusējuma vērtība ir vērtība, kas jāatgriež, ja nobīde pārsniedz nodalījuma darbības jomu. Ja noklusējuma vērtība nav norādīta, tiek atgriezta NULL.
- partition_by_clause: Izvēles klauzula, kas sadala rezultātu kopu nodalījumos. Funkcija LAG() tiek lietota katram nodalījumam atsevišķi.
- order_by_clause: Rindu secība katrā nodalījumā. Tas ir obligāti, un tas ir jānorāda.
SQL LAG() funkcijas piemērs
Apskatīsim dažus SQL VRG funkcijas piemērus un sapratīsim, kā izmantot VRG funkciju SQL Server.
1. piemērs
SELECT Organisation, [Year], Revenue, LAG (Revenue, 1, 0) OVER ( PARTITION BY Organisation ORDER BY [Year]) AS PrevYearRevenue FROM Org ORDER BY Organisation, [Year];>
Izvade:
| Organizācija | gads | Ieņēmumi | Iepriekšējā gada ieņēmumi |
|---|---|---|---|
| ABCD ziņas | 2013. gads | 440 000 | 0 |
| ABCD ziņas | 2014. gads | 480 000 | 440 000 |
| ABCD ziņas | 2015. gads | 490 000 | 480 000 |
| ABCD ziņas | 2016. gads | 500 000 | 490 000 |
| ABCD ziņas | 2017. gads | 520 000 | 500 000 |
| ABCD ziņas | 2018. gads | 525 000 | 520 000 |
| ABCD ziņas | 2019. gads | 540 000 | 525 000 |
| ABCD ziņas | 2020. gads | 550 000 | 540 000 |
| Z ziņas | 2016. gads | 720 000 | 0 |
| Z ziņas | 2017. gads | 750 000 | 720 000 |
| Z ziņas | 2018. gads | 780 000 | 750 000 |
| Z ziņas | 2019. gads | 880 000 | 780 000 |
| Z ziņas | 2020. gads | 910 000 | 880 000 |
Iepriekš minētajā piemērā mums ir 2 TV ziņu kanāli, kuru pašreizējā un iepriekšējā gada ieņēmumi tiek parādīti vienā rindā, izmantojot funkciju VVG(). Kā redzat, katram TV ziņu kanāla pirmajam ierakstam nav iepriekšējā gada ieņēmumu, tāpēc tas parāda noklusējuma vērtību 0. Šī funkcija var būt ļoti noderīga, lai iegūtu datus BI pārskatiem, ja vēlaties salīdzināt vērtības. secīgos periodos, piem. Gadu uz gadu vai ceturkšņa ceturkšņa vai ikdienas salīdzinājumi.
2. piemērs
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];>
Izvade:
| Organizācija | gads | Ieņēmumi | Iepriekšējā gada ieņēmumi | GadsGadāIzaugsme |
|---|---|---|---|---|
| ABCD ziņas | 2013. gads | 440 000 | NULL | NULL |
| ABCD ziņas | 2014. gads | 480 000 | 440 000 | 40 000 |
| ABCD ziņas | 2015. gads | 490 000 | 480 000 | 10 000 |
| ABCD ziņas | 2016. gads | 500 000 | 490 000 | 10 000 |
| ABCD ziņas | 2017. gads | 520 000 | 500 000 | 20 000 |
| ABCD ziņas | 2018. gads | 525 000 | 520 000 | 5000 |
| ABCD ziņas | 2019. gads | 540 000 | 525 000 | 15 000 |
| ABCD ziņas | 2020. gads | 550 000 | 540 000 | 10 000 |
| Z ziņas | 2016. gads | 720 000 | NULL | NULL |
| Z ziņas | 2017. gads | 750 000 | 720 000 | 30 000 |
| Z ziņas | 2018. gads | 780 000 | 750 000 | 30 000 |
| Z ziņas | 2019. gads | 880 000 | 780 000 | 100 000 |
| Z ziņas | 2020. gads | 910 000 | 880 000 | 30 000 |
Iepriekš minētajā piemērā mēs varam līdzīgi aprēķināt TV ziņu kanāla gada pieaugumu. Šajā piemērā ir jāņem vērā arī viena lieta, ka mēs neesam nodrošinājuši nevienu noklusējuma parametru LAG (), un tāpēc funkcija LAG () atgriež NULL, ja nav iepriekšējo vērtību. Funkciju VRG() var ieviest datu bāzes līmenī, un BI atskaišu risinājumi, piemēram, Power BI un Tableau, var izvairīties no apgrūtinošu pasākumu izmantošanas atskaites slānī.
Svarīgi punkti par SQL LAG() funkciju
- Funkcija SQL LAG() ir loga funkcija, kas lietotājiem ļauj piekļūt datiem no iepriekšējām datu kopas rindām.
- Tas ļauj lietotājiem salīdzināt pašreizējās rindu vērtības ar vērtībām no iepriekšējām rindām, īpaši tām, kas saistītas ar laiku vai konkrētām kolonnām.
- Funkcija LAG() ir vērtīga, lai analizētu izmaiņas laika gaitā, piemēram, akciju tirgus datus, dienas tendences un izmaiņas vairākās kolonnās.