logo

SQL LAG() funktion

SQL LAG()-funktionen er en vinduesfunktion, der giver adgang til en række med en specificeret fysisk offset, som kommer før den aktuelle række .

LAG funktion i SQL Server er vant til sammenligne aktuelle rækkeværdier med værdier fra den foregående række.



netværksarkitektur

Syntaks

Det LAG funktions syntaks er:

.LAG (scalar_expression [, offset [, default ]]) OVER ( [ partition_by_clause ] order_by_clause )

Hvor :



  • scalar_expression – Den værdi, der skal returneres baseret på den angivne offset.
  • offset - Antallet af rækker tilbage fra den aktuelle række, hvorfra der skal opnås en værdi. Hvis ikke angivet, er standarden 1.
  • Standard - standard er den værdi, der skal returneres, hvis offset går ud over partitionens omfang. Hvis en standardværdi ikke er angivet, returneres NULL.
  • partition_by_clause: En valgfri klausul, der opdeler resultatsættet i partitioner. Funktionen LAG() anvendes på hver partition separat.
  • ordre_efter_klausul: Rækkefølgen af ​​rækkerne inden for hver partition. Dette er obligatorisk og skal specificeres.

Eksempel på SQL LAG()-funktion

Lad os se på nogle eksempler på SQL LAG-funktion og forstå, hvordan man bruger LAG-funktion i SQL Server.

Eksempel 1

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

Produktion:

Organisation År Indtægter Forrige Års Omsætning
ABCD Nyheder 2013 440000 0
ABCD Nyheder 2014 480.000 440000
ABCD Nyheder 2015 490000 480.000
ABCD Nyheder 2016 500.000 490000
ABCD Nyheder 2017 520.000 500.000
ABCD Nyheder 2018 525000 520.000
ABCD Nyheder 2019 540.000 525000
ABCD Nyheder 2020 550.000 540.000
Z Nyheder 2016 720.000 0
Z Nyheder 2017 750.000 720.000
Z Nyheder 2018 780.000 750.000
Z Nyheder 2019 880.000 780.000
Z Nyheder 2020 910000 880.000

I ovenstående eksempel har vi 2 tv-nyhedskanaler, hvis nuværende og forrige års omsætning præsenteres på samme række ved hjælp af LAG()-funktionen. Som du kan se, at den allerførste rekord for hver af TV-nyhedskanalerne ikke har tidligere års omsætning, så den viser standardværdien på 0. Denne funktion kan være meget nyttig til at give data til BI-rapporter, når du vil sammenligne værdier i sammenhængende perioder, for f.eks. År til år eller kvartal til kvartal eller daglige sammenligninger.



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

Produktion:

Organisation År Indtægter Forrige Års Omsætning YearOnYearGrowth
ABCD Nyheder 2013 440000 NUL NUL
ABCD Nyheder 2014 480.000 440000 40.000
ABCD Nyheder 2015 490000 480.000 10.000
ABCD Nyheder 2016 500.000 490000 10.000
ABCD Nyheder 2017 520.000 500.000 20.000
ABCD Nyheder 2018 525000 520.000 5000
ABCD Nyheder 2019 540.000 525000 15.000
ABCD Nyheder 2020 550.000 540.000 10.000
Z Nyheder 2016 720.000 NUL NUL
Z Nyheder 2017 750.000 720.000 30.000
Z Nyheder 2018 780.000 750.000 30.000
Z Nyheder 2019 880.000 780.000 100.000
Z Nyheder 2020 910000 880.000 30.000

I ovenstående eksempel kan vi på samme måde beregne år til år vækst for tv-nyhedskanalen. En ting at bemærke i dette eksempel er, at vi ikke har leveret nogen standardparameter til LAG(), og derfor returnerer LAG()-funktionen NULL, hvis der ikke er nogen tidligere værdier. LAG()-funktionen kan implementeres på databaseniveau, og BI-rapporteringsløsninger som Power BI og Tableau kan undgå at bruge de besværlige foranstaltninger på rapporteringslaget.

hjemmeside som coomeet

Vigtige punkter om SQL LAG() funktion

  • SQL LAG()-funktionen er en vinduesfunktion, der giver brugere adgang til data fra tidligere rækker i et datasæt.
  • Det gør det muligt for brugere at sammenligne aktuelle rækkeværdier med værdier fra tidligere rækker, især dem, der er relateret til tid eller specifikke kolonner.
  • LAG()-funktionen er værdifuld til at analysere ændringer over tid, såsom aktiemarkedsdata, daglige tendenser og ændringer i flere kolonner.