logo

SQL LAG() funksjon

SQL LAG()-funksjonen er en vindusfunksjon som gir tilgang til en rad med en spesifisert fysisk forskyvning som kommer før gjeldende rad .

LAG-funksjon i SQL Server er vant til sammenligne gjeldende radverdier med verdier fra forrige rad.



nettverksarkitektur

Syntaks

De LAG-funksjonssyntaks er:

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

Hvor :



  • skalaruttrykk – Verdien som skal returneres basert på spesifisert offset.
  • offset - Antall rader tilbake fra gjeldende rad som det skal hentes en verdi fra. Hvis ikke spesifisert, er standard 1.
  • standard – standard er verdien som skal returneres hvis forskyvningen går utover omfanget av partisjonen. Hvis en standardverdi ikke er spesifisert, returneres NULL.
  • partisjon_etter_klausul: En valgfri klausul som deler resultatsettet inn i partisjoner. LAG()-funksjonen brukes på hver partisjon separat.
  • ordre_etter_klausul: Rekkefølgen på radene innenfor hver partisjon. Dette er obligatorisk og må spesifiseres.

SQL LAG()-funksjonseksempel

La oss se på noen eksempler på SQL LAG-funksjon og forstå hvordan du bruker LAG-funksjon 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];>

Produksjon:

Organisasjon År Inntekter ForrigeÅrinntekt
ABCD Nyheter 2013 440 000 0
ABCD Nyheter 2014 480 000 440 000
ABCD Nyheter 2015 490 000 480 000
ABCD Nyheter 2016 500 000 490 000
ABCD Nyheter 2017 520 000 500 000
ABCD Nyheter 2018 525 000 520 000
ABCD Nyheter 2019 540 000 525 000
ABCD Nyheter 2020 550 000 540 000
Z Nyheter 2016 720 000 0
Z Nyheter 2017 750 000 720 000
Z Nyheter 2018 780 000 750 000
Z Nyheter 2019 880 000 780 000
Z Nyheter 2020 910 000 880 000

I eksemplet ovenfor har vi 2 TV-nyhetskanaler hvis inntekter for nåværende og forrige år presenteres på samme rad ved å bruke LAG()-funksjonen. Som Du kan se at den aller første posten for hver av TV-nyhetskanalene ikke har tidligere års inntekter, så den viser standardverdien på 0. Denne funksjonen kan være svært nyttig for å gi data for BI-rapporter når du vil sammenligne verdier i sammenhengende perioder, for f.eks. År for år eller kvartal for 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];>

Produksjon:

Organisasjon År Inntekter ForrigeÅrinntekt YearOnYearGrowth
ABCD Nyheter 2013 440 000 NULL NULL
ABCD Nyheter 2014 480 000 440 000 40 000
ABCD Nyheter 2015 490 000 480 000 10 000
ABCD Nyheter 2016 500 000 490 000 10 000
ABCD Nyheter 2017 520 000 500 000 20 000
ABCD Nyheter 2018 525 000 520 000 5000
ABCD Nyheter 2019 540 000 525 000 15 000
ABCD Nyheter 2020 550 000 540 000 10 000
Z Nyheter 2016 720 000 NULL NULL
Z Nyheter 2017 750 000 720 000 30 000
Z Nyheter 2018 780 000 750 000 30 000
Z Nyheter 2019 880 000 780 000 100 000
Z Nyheter 2020 910 000 880 000 30 000

I eksemplet ovenfor kan vi på samme måte beregne år-til-år-vekst for TV-nyhetskanalen. En ting å merke seg i dette eksemplet er også at vi ikke har oppgitt noen standardparameter til LAG(), og derfor returnerer LAG()-funksjonen NULL i tilfelle det ikke er noen tidligere verdier. LAG()-funksjonen kan implementeres på databasenivå, og BI-rapporteringsløsninger som Power BI og Tableau kan unngå å bruke de tungvinte tiltakene i rapporteringslaget.

linux snarveier

Viktige punkter om SQL LAG()-funksjonen

  • SQL LAG()-funksjonen er en vindusfunksjon som lar brukere få tilgang til data fra tidligere rader i et datasett.
  • Det gjør det mulig for brukere å sammenligne gjeldende radverdier med verdier fra tidligere rader, spesielt de som er relatert til tid eller spesifikke kolonner.
  • LAG()-funksjonen er verdifull for å analysere endringer over tid, for eksempel aksjemarkedsdata, daglige trender og endringer i flere kolonner.