logo

Funzione SQL LAG()

La funzione SQL LAG() è una funzione finestra che fornisce l'accesso a una riga con un offset fisico specificato che precede la riga corrente .

Funzione LAG in SQL Server è abituato a confrontare i valori della riga corrente con i valori della riga precedente.



quanti frutti ci sono

Sintassi

IL Sintassi della funzione LAG È:

.LAG (espressione_scalare [, offset [, predefinito ]]) OVER ( [ partizione_per_clausola ] ordine_per_clausola )

Dove :



  • espressione_scalare – Il valore da restituire in base all'offset specificato.
  • compensare - Il numero di righe a ritroso rispetto alla riga corrente da cui ottenere un valore. Se non specificato, il valore predefinito è 1.
  • predefinito - default è il valore da restituire se l'offset va oltre l'ambito della partizione. Se non viene specificato un valore predefinito, viene restituito NULL.
  • partizione_per_clausola: Una clausola facoltativa che divide il set di risultati in partizioni. La funzione LAG() viene applicata separatamente a ciascuna partizione.
  • order_by_clause: L'ordine delle righe all'interno di ciascuna partizione. Questo è obbligatorio e deve essere specificato.

Esempio di funzione SQL LAG()

Diamo un'occhiata ad alcuni esempi della funzione SQL LAG e comprendiamo come utilizzare la funzione LAG in SQL Server.

Esempio 1

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

Produzione:

Organizzazione Anno Reddito Entrate dell'anno precedente
Notizie ABCD 2013 440000 0
Notizie ABCD 2014 480000 440000
Notizie ABCD 2015 490000 480000
Notizie ABCD 2016 500000 490000
Notizie ABCD 2017 520000 500000
Notizie ABCD 2018 525000 520000
Notizie ABCD 2019 540000 525000
Notizie ABCD 2020 550000 540000
Notizie Z 2016 720000 0
Notizie Z 2017 750000 720000
Notizie Z 2018 780000 750000
Notizie Z 2019 880000 780000
Notizie Z 2020 910000 880000

Nell'esempio sopra, abbiamo 2 canali di notizie TV le cui entrate attuali e quelle dell'anno precedente sono presentate sulla stessa riga utilizzando la funzione LAG(). Come puoi vedere, il primo record per ciascuno dei canali di notizie TV non presenta ricavi dell'anno precedente, quindi mostra il valore predefinito pari a 0. Questa funzione può essere molto utile per fornire dati per i report BI quando si desidera confrontare i valori in periodi consecutivi, ad es. Anno su anno o trimestre su trimestre o confronti giornalieri.



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

Produzione:

Organizzazione Anno Reddito Entrate dell'anno precedente Crescita Anno Su Anno
Notizie ABCD 2013 440000 NULLO NULLO
Notizie ABCD 2014 480000 440000 40000
Notizie ABCD 2015 490000 480000 10000
Notizie ABCD 2016 500000 490000 10000
Notizie ABCD 2017 520000 500000 20000
Notizie ABCD 2018 525000 520000 5000
Notizie ABCD 2019 540000 525000 15000
Notizie ABCD 2020 550000 540000 10000
Notizie Z 2016 720000 NULLO NULLO
Notizie Z 2017 750000 720000 30000
Notizie Z 2018 780000 750000 30000
Notizie Z 2019 880000 780000 100000
Notizie Z 2020 910000 880000 30000

Nell'esempio sopra, possiamo calcolare in modo simile la crescita anno su anno per il canale di notizie TV. Inoltre, una cosa da notare in questo esempio è che non abbiamo fornito alcun parametro predefinito a LAG() e quindi la funzione LAG() restituisce NULL nel caso in cui non siano presenti valori precedenti. La funzione LAG() può essere implementata a livello di database e le soluzioni di reporting BI come Power BI e Tableau possono evitare l'utilizzo di misure ingombranti a livello di reporting.

alberi divaricati

Punti importanti sulla funzione SQL LAG()

  • La funzione SQL LAG() è una funzione di finestra che consente agli utenti di accedere ai dati delle righe precedenti in un set di dati.
  • Consente agli utenti di confrontare i valori della riga corrente con i valori delle righe precedenti, in particolare quelli relativi al tempo o a colonne specifiche.
  • La funzione LAG() è utile per analizzare i cambiamenti nel tempo, come i dati del mercato azionario, le tendenze giornaliere e le alterazioni in più colonne.