logo

Funkcia SQL LAG().

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.