Funkcia SQL LAG(). je funkcia okna, ktorá poskytuje prístup k riadku so špecifikovaným fyzickým posunom, ktorý sa nachádza pred aktuálnym riadkom .
trieda vs objekt java
Funkcia LAG na serveri SQL Server je zvyknutý porovnajte hodnoty aktuálneho riadku s hodnotami z predchádzajúceho riadka.
Syntax
The Syntax funkcie LAG je:
.LAG (skalar_expression [, offset [, predvolene ]]) NAD ( [ partition_by_clause ] order_by_clause )
Kde :
- skalárny_výraz – Hodnota, ktorá sa má vrátiť na základe zadaného posunu.
- offset – Počet riadkov späť od aktuálneho riadka, z ktorých sa má získať hodnota. Ak nie je zadaný, predvolená hodnota je 1.
- predvolené – predvolená hodnota je hodnota, ktorá sa má vrátiť, ak posun presahuje rozsah oddielu. Ak nie je zadaná predvolená hodnota, vráti sa NULL.
- partition_by_cluuse: Nepovinná klauzula, ktorá rozdeľuje množinu výsledkov na časti. Funkcia LAG() sa aplikuje na každý oddiel samostatne.
- order_by_cluuse: Poradie riadkov v rámci každého oddielu. Toto je povinné a musí byť špecifikované.
Príklad funkcie SQL LAG().
Pozrime sa na niekoľko príkladov funkcie SQL LAG a pochopíme, ako používať funkciu LAG na serveri SQL Server.
Príklad 1
SELECT Organisation, [Year], Revenue, LAG (Revenue, 1, 0) OVER ( PARTITION BY Organisation ORDER BY [Year]) AS PrevYearRevenue FROM Org ORDER BY Organisation, [Year];>
Výkon:
| Organizácia | rok | Výnosy | PrevYearRevenue |
|---|---|---|---|
| Správy ABCD | 2013 | 440 000 | 0 |
| Správy ABCD | 2014 | 480 000 | 440 000 |
| Správy ABCD | 2015 | 490 000 | 480 000 |
| Správy ABCD | 2016 | 500 000 | 490 000 |
| Správy ABCD | 2017 | 520 000 | 500 000 |
| Správy ABCD | 2018 | 525 000 | 520 000 |
| Správy ABCD | 2019 | 540 000 | 525 000 |
| Správy ABCD | 2020 | 550 000 | 540 000 |
| Správy Z | 2016 | 720 000 | 0 |
| Správy Z | 2017 | 750 000 | 720 000 |
| Správy Z | 2018 | 780 000 | 750 000 |
| Správy Z | 2019 | 880 000 | 780 000 |
| Správy Z | 2020 | 910 000 | 880 000 |
Vo vyššie uvedenom príklade máme 2 televízne spravodajské kanály, ktorých aktuálny a predchádzajúci rok sú uvedené v rovnakom riadku pomocou funkcie MAS(). Ako vidíte, že úplne prvý záznam pre každý z kanálov televíznych novín nemá príjmy za predchádzajúci rok, takže zobrazuje predvolenú hodnotu 0. Táto funkcia môže byť veľmi užitočná pri získavaní údajov pre správy BI, keď chcete porovnávať hodnoty v po sebe nasledujúcich obdobiach, napr. Medziročné alebo štvrťročné alebo denné porovnania.
Príklad 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];>
Výkon:
| Organizácia | rok | Výnosy | PrevYearRevenue | YearOnYearRast |
|---|---|---|---|---|
| Správy ABCD | 2013 | 440 000 | NULOVÝ | NULOVÝ |
| Správy ABCD | 2014 | 480 000 | 440 000 | 40 000 |
| Správy ABCD | 2015 | 490 000 | 480 000 | 10 000 |
| Správy ABCD | 2016 | 500 000 | 490 000 | 10 000 |
| Správy ABCD | 2017 | 520 000 | 500 000 | 20 000 |
| Správy ABCD | 2018 | 525 000 | 520 000 | 5000 |
| Správy ABCD | 2019 | 540 000 | 525 000 | 15 000 |
| Správy ABCD | 2020 | 550 000 | 540 000 | 10 000 |
| Správy Z | 2016 | 720 000 | NULOVÝ | NULOVÝ |
| Správy Z | 2017 | 750 000 | 720 000 | 30 000 |
| Správy Z | 2018 | 780 000 | 750 000 | 30 000 |
| Správy Z | 2019 | 880 000 | 780 000 | 100 000 |
| Správy Z | 2020 | 910 000 | 880 000 | 30 000 |
Vo vyššie uvedenom príklade môžeme podobne vypočítať medziročný rast pre televízny spravodajský kanál. Jedna vec, ktorú si treba v tomto príklade všimnúť, je, že sme do LAG() nedodali žiadny predvolený parameter, a preto funkcia LAG() vracia NULL v prípade, že neexistujú žiadne predchádzajúce hodnoty. Funkciu LAG() je možné implementovať na úrovni databázy a riešenia BI Reporting, ako sú Power BI a Tableau, sa môžu vyhnúť používaniu ťažkopádnych opatrení na úrovni zostáv.
Dôležité body o funkcii SQL LAG().
- Funkcia SQL LAG() je funkcia okna, ktorá používateľom umožňuje prístup k údajom zo skorších riadkov v množine údajov.
- Umožňuje používateľom porovnávať aktuálne hodnoty riadkov s hodnotami z predchádzajúcich riadkov, najmä s tými, ktoré súvisia s časom alebo konkrétnymi stĺpcami.
- Funkcia LAG() je cenná na analýzu zmien v priebehu času, ako sú údaje o akciovom trhu, denné trendy a zmeny vo viacerých stĺpcoch.