logo

SQL LAG()-funktio

SQL LAG()-funktio on ikkunatoiminto, joka tarjoaa pääsyn riville määritetyllä fyysisellä siirtymällä, joka tulee ennen nykyistä riviä .

LAG-toiminto SQL Serverissä on tapana vertaa nykyisen rivin arvoja edellisen rivin arvoihin.



Syntaksi

The LAG-funktion syntaksi On:

.LAG (skalaarilauseke [, offset [, oletus]]) YLI ( [ osio_lauseittain ] järjestys lauseelta )

Missä :



  • skalaarinen_lauseke – Määritetyn siirtymän perusteella palautettava arvo.
  • offset - Nykyiseltä riviltä taaksepäin olevien rivien määrä, josta arvo saadaan. Jos sitä ei ole määritetty, oletusarvo on 1.
  • oletusarvo - oletusarvo on palautettava arvo, jos offset ylittää osion soveltamisalan. Jos oletusarvoa ei ole määritetty, palautetaan NULL.
  • partition_by_lause: Valinnainen lauseke, joka jakaa tulosjoukon osioihin. LAG()-funktiota sovelletaan jokaiseen osioon erikseen.
  • order_by_lause: Kunkin osion rivien järjestys. Tämä on pakollista ja se on määritettävä.

SQL LAG()-funktioesimerkki

Katsotaanpa joitain esimerkkejä SQL LAG -toiminnosta ja ymmärrämme kuinka LAG-toimintoa käytetään SQL Serverissä.

Esimerkki 1

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

Lähtö:

Organisaatio vuosi Tulot Edellinen vuositulo
ABCD uutiset 2013 440 000 0
ABCD uutiset 2014 480 000 440 000
ABCD uutiset 2015 490 000 480 000
ABCD uutiset 2016 500 000 490 000
ABCD uutiset 2017 520 000 500 000
ABCD uutiset 2018 525 000 520 000
ABCD uutiset 2019 540 000 525 000
ABCD uutiset 2020 550 000 540 000
Z Uutiset 2016 720 000 0
Z Uutiset 2017 750 000 720 000
Z Uutiset 2018 780 000 750 000
Z Uutiset 2019 880 000 780 000
Z Uutiset 2020 910 000 880 000

Yllä olevassa esimerkissä meillä on 2 TV-uutiskanavaa, joiden nykyinen ja edellisen vuoden tulot esitetään samalla rivillä käyttämällä LAG()-toimintoa. Kuten näette, jokaisen TV-uutiskanavan ensimmäisellä tietueella ei ole edellisen vuoden tuloja, joten se näyttää oletusarvon 0. Tämä toiminto voi olla erittäin hyödyllinen tietojen tuottamisessa BI-raportteihin, kun haluat vertailla arvoja peräkkäisinä jaksoina, esim. Vertailu vuodesta toiseen tai neljännesvuosittaiseen tai päivittäiseen vertailuun.



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

Lähtö:

Organisaatio vuosi Tulot Edellinen vuositulo Vuotta vuodessa Kasvu
ABCD uutiset 2013 440 000 TYHJÄ TYHJÄ
ABCD uutiset 2014 480 000 440 000 40 000
ABCD uutiset 2015 490 000 480 000 10 000
ABCD uutiset 2016 500 000 490 000 10 000
ABCD uutiset 2017 520 000 500 000 20 000
ABCD uutiset 2018 525 000 520 000 5000
ABCD uutiset 2019 540 000 525 000 15 000
ABCD uutiset 2020 550 000 540 000 10 000
Z Uutiset 2016 720 000 TYHJÄ TYHJÄ
Z Uutiset 2017 750 000 720 000 30 000
Z Uutiset 2018 780 000 750 000 30 000
Z Uutiset 2019 880 000 780 000 100 000
Z Uutiset 2020 910 000 880 000 30 000

Yllä olevassa esimerkissä voimme samalla tavalla laskea TV-uutiskanavan vuosittaisen kasvun. Tässä esimerkissä on myös huomioitava seikka, että emme ole toimittaneet mitään oletusparametria LAG()-funktiolle, joten LAG()-funktio palauttaa NULL-arvon, jos aikaisempia arvoja ei ole. LAG()-funktio voidaan toteuttaa tietokantatasolla, ja BI-raportointiratkaisut, kuten Power BI ja Tableau, voivat välttää raskaiden toimenpiteiden käyttämisen raportointikerroksessa.

Tärkeitä kohtia SQL LAG() -funktiosta

  • SQL LAG()-funktio on ikkunafunktio, jonka avulla käyttäjät voivat käyttää tietojoukon aiempien rivien tietoja.
  • Sen avulla käyttäjät voivat verrata nykyisten rivien arvoja aiempien rivien arvoihin, erityisesti niihin, jotka liittyvät aikaan tai tiettyihin sarakkeisiin.
  • LAG()-funktio on arvokas analysoitaessa ajan kuluessa tapahtuneita muutoksia, kuten osakemarkkinatietoja, päivittäisiä trendejä ja useiden sarakkeiden muutoksia.