logo

SQL LAG() funkcija

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.