logo

Funcția SQL LAG().

Funcția SQL LAG(). este o funcție de fereastră care oferă acces la un rând la un decalaj fizic specificat, care vine înaintea rândului curent .

Funcția LAG în SQL Server este obișnuit să comparați valorile rândului curent cu valorile din rândul anterior.



Sintaxă

The Sintaxa funcției LAG este:

.LAG (expresie_scalar [, offset [, implicit ]]) OVER ( [ partition_by_clause ] order_by_clause )

Unde :



  • expresie_scalară – Valoarea care trebuie returnată pe baza offset-ului specificat.
  • decalaj - Numărul de rânduri înapoi de la rândul curent din care se obține o valoare. Dacă nu este specificat, valoarea implicită este 1.
  • Mod implicit - implicit este valoarea care trebuie returnată dacă offset-ul depășește domeniul de aplicare al partiției. Dacă nu este specificată o valoare implicită, este returnat NULL.
  • partition_by_clause: O clauză opțională care împarte setul de rezultate în partiții. Funcția LAG() este aplicată fiecărei partiții separat.
  • order_by_clause: Ordinea rândurilor din fiecare partiție. Acest lucru este obligatoriu și trebuie specificat.

Exemplu de funcție SQL LAG().

Să ne uităm la câteva exemple de funcție SQL LAG și să înțelegem cum să folosiți funcția LAG în SQL Server.

indicii în c

Exemplul 1

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

Ieșire:

Organizare An Venituri PrevYearRevenue
Știri ABCD 2013 440000 0
Știri ABCD 2014 480000 440000
Știri ABCD 2015 490000 480000
Știri ABCD 2016 500000 490000
Știri ABCD 2017 520000 500000
Știri ABCD 2018 525000 520000
Știri ABCD 2019 540000 525000
Știri ABCD 2020 550000 540000
Z News 2016 720000 0
Z News 2017 750000 720000
Z News 2018 780000 750000
Z News 2019 880000 780000
Z News 2020 910000 880000

În exemplul de mai sus, avem 2 canale de știri TV ale căror venituri din anul curent și din anul precedent sunt prezentate pe același rând folosind funcția LAG(). După cum puteți vedea că prima înregistrare pentru fiecare dintre canalele de știri TV nu are venituri din anul precedent, așa că arată valoarea implicită de 0. Această funcție poate fi foarte utilă pentru a furniza date pentru rapoartele BI atunci când doriți să comparați valori în perioade consecutive, de ex. Comparații an la an sau trimestru la trimestru sau zilnic.



Exemplul 2

  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];>

Ieșire:

Organizare An Venituri PrevYearRevenue YearOnYearGrowth
Știri ABCD 2013 440000 NUL NUL
Știri ABCD 2014 480000 440000 40000
Știri ABCD 2015 490000 480000 10000
Știri ABCD 2016 500000 490000 10000
Știri ABCD 2017 520000 500000 20000
Știri ABCD 2018 525000 520000 5000
Știri ABCD 2019 540000 525000 15000
Știri ABCD 2020 550000 540000 10000
Z News 2016 720000 NUL NUL
Z News 2017 750000 720000 30000
Z News 2018 780000 750000 30000
Z News 2019 880000 780000 100000
Z News 2020 910000 880000 30000

În exemplul de mai sus, putem calcula în mod similar creșterea anuală pentru canalul de știri TV. De asemenea, un lucru de observat în acest exemplu este că nu am furnizat niciun parametru implicit pentru LAG(), și, prin urmare, funcția LAG() returnează NULL în cazul în care nu există valori anterioare. Funcția LAG() poate fi implementată la nivel de bază de date, iar soluțiile de raportare BI precum Power BI și Tableau pot evita utilizarea măsurilor greoaie la nivelul de raportare.

Puncte importante despre funcția SQL LAG().

  • Funcția SQL LAG() este o funcție de fereastră care permite utilizatorilor să acceseze datele din rândurile anterioare dintr-un set de date.
  • Permite utilizatorilor să compare valorile rândurilor curente cu valorile din rândurile anterioare, în special cele legate de timp sau anumite coloane.
  • Funcția LAG() este valoroasă pentru analiza schimbărilor în timp, cum ar fi datele bursiere, tendințele zilnice și modificările în mai multe coloane.