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.