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.