logo

Funció SQL LAG().

La funció SQL LAG(). és una funció de finestra que proporciona accés a una fila amb un desplaçament físic especificat que arriba abans de la fila actual .

Funció LAG a SQL Server està acostumat compareu els valors de la fila actual amb els de la fila anterior.



Sintaxi

El Sintaxi de la funció LAG és:

.LAG (expressió_escalar [, desplaçament [, predeterminat ]]) OVER ( [ partició_per_clàusula ] ordre_per_clàusula )

On :



  • expressió_escalar - El valor que es retornarà en funció del desplaçament especificat.
  • compensació - El nombre de files enrere des de la fila actual a partir de les quals cal obtenir un valor. Si no s'especifica, el valor per defecte és 1.
  • per defecte - per defecte és el valor que es retornarà si l'offset va més enllà de l'abast de la partició. Si no s'especifica un valor predeterminat, es retorna NULL.
  • partició_per_clàusula: Una clàusula opcional que divideix el conjunt de resultats en particions. La funció LAG() s'aplica a cada partició per separat.
  • order_by_clause: L'ordre de les files dins de cada partició. Això és obligatori i s'ha d'especificar.

Exemple de funció SQL LAG().

Vegem alguns exemples de la funció SQL LAG i entenem com utilitzar la funció LAG a SQL Server.

Exemple 1

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

Sortida:

Organització Curs Ingressos Ingressos de l'any anterior
Notícies ABCD 2013 440000 0
Notícies ABCD 2014 480000 440000
Notícies ABCD 2015 490000 480000
Notícies ABCD 2016 500000 490000
Notícies ABCD 2017 520000 500000
Notícies ABCD 2018 525000 520000
Notícies ABCD 2019 540000 525000
Notícies ABCD 2020 550000 540000
Z Notícies 2016 720000 0
Z Notícies 2017 750000 720000
Z Notícies 2018 780000 750000
Z Notícies 2019 880000 780000
Z Notícies 2020 910000 880000

A l'exemple anterior, tenim 2 canals de notícies de televisió els ingressos de l'any actual i anterior es presenten a la mateixa fila mitjançant la funció LAG(). Com podeu veure que el primer registre de cadascun dels canals de notícies de televisió no té ingressos de l'any anterior, de manera que mostra el valor predeterminat de 0. Aquesta funció pot ser molt útil per obtenir dades per als informes de BI quan voleu comparar valors. en períodes consecutius, per ex. Comparacions interanuals o trimestrals o diàries.



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

Sortida:

Organització Curs Ingressos Ingressos de l'any anterior AnyOnYearGrowth
Notícies ABCD 2013 440000 NUL NUL
Notícies ABCD 2014 480000 440000 40000
Notícies ABCD 2015 490000 480000 10000
Notícies ABCD 2016 500000 490000 10000
Notícies ABCD 2017 520000 500000 20000
Notícies ABCD 2018 525000 520000 5000
Notícies ABCD 2019 540000 525000 15000
Notícies ABCD 2020 550000 540000 10000
Z Notícies 2016 720000 NUL NUL
Z Notícies 2017 750000 720000 30000
Z Notícies 2018 780000 750000 30000
Z Notícies 2019 880000 780000 100000
Z Notícies 2020 910000 880000 30000

A l'exemple anterior, podem calcular de manera similar el creixement anual del canal de notícies de televisió. A més, una cosa a notar en aquest exemple és que no hem proporcionat cap paràmetre per defecte a LAG(), i per tant la funció LAG() retorna NULL en cas que no hi hagi valors anteriors. La funció LAG() es pot implementar a nivell de base de dades i les solucions d'informes de BI com Power BI i Tableau poden evitar l'ús de mesures feixugues a la capa d'informes.

Punts importants sobre la funció SQL LAG().

  • La funció SQL LAG() és una funció de finestra que permet als usuaris accedir a les dades de les files anteriors d'un conjunt de dades.
  • Permet als usuaris comparar els valors de les files actuals amb els valors de les files anteriors, especialment els relacionats amb el temps o columnes específiques.
  • La funció LAG() és valuosa per analitzar els canvis al llarg del temps, com ara dades de borsa, tendències diàries i alteracions en diverses columnes.