Passa al contenuto principale
Workday User Guide
Ultimo aggiornamento: 2023-06-23
LAG

LAG

Descrizione

LAG
è una funzione di aggregazione della finestra che suddivide le righe in gruppi, ordina le righe in base a un campo e restituisce il valore di un campo nella riga in corrispondenza dello scostamento specificato prima (sopra) della riga corrente nel gruppo.
Il
PARTITION BY
La clausola determina i campi da utilizzare per suddividere un insieme di righe di input in gruppi. Il
ORDER BY
La clausola determina come ordinare le righe nella partizione.
Il sistema separa le righe di input in gruppi in base ai campi di partizionamento, ordina le righe in base ai campi di ordinamento e quindi calcola l'espressione aggregata (ritardo per questa funzione) in ogni gruppo.

Sintassi

LAG
(
input_field
,
offset
,
default_value
)
OVER
(
PARTITION BY
partitioning_field
[,
partitioning_field
]
ORDER BY
ordering_field
[ASC | DESC] [,
ordering_field
[ASC | DESC]] )

Valore restituito

Restituisce un valore per ogni riga dello stesso tipo di
input_field
.

Parametri di input

input_field
Sono obbligatori. Campo in cui eseguire la funzione di aggregazione. È possibile specificare qualsiasi tipo di campo.
offset
Facoltativo. Il numero di righe prima della riga corrente di cui restituire il valore. Deve essere un numero letterale maggiore o uguale a zero (0) e minore o uguale a 100. Se non si specifica la compensazione, il sistema utilizza il valore 1.
default_value
Facoltativo. Il valore restituito da questa funzione quando la riga di offset non rientra nella finestra correntemente definita o quando il valore nella riga di offset è NULL.
default_value
deve essere dello stesso tipo di
input_field
. Se non si specifica un valore predefinito, il sistema utilizza il valore NULL.
OVER()
Obbligatorio
OVER
deve essere utilizzato all'interno di a
LAG
espressione
PARTITION BY
partitioning_field
Sono obbligatori. Utilizzare il
PARTITION BY
per specificare uno o più campi da utilizzare per partizionare un gruppo di righe di input. È possibile specificare qualsiasi tipo di campo tranne Valuta. Esempio: si specifica il campo Mese come campo di partizionamento, in modo che il sistema raggruppa in un'unica partizione tutti i record che hanno lo stesso valore per il mese.
ORDER BY
ordering_field
Sono obbligatori. Utilizzare il
ORDER BY
per specificare come ordinare le righe di input nella partizione utilizzando i valori nel campo specificato all'interno di ogni partizione. È possibile specificare qualsiasi tipo di campo tranne Valuta.
È possibile utilizzare
DESC
o
ASC
per ordinare le parole chiave in ordine decrescente (valori da decrescente, valori NULL ultimi) o crescente (valori decrescenti, valori NULL primi) per ogni campo di ordinamento. Se non si specifica un ordinamento per un campo di ordinamento, il sistema ordina automaticamente le righe in ordine crescente.

Esempi

Esempio: si dispone di un set di dati con queste righe e questi campi.
row_ID
Employee_Name
Eff_Date
Stipendi
1
Ehi
1/1/18
49000
2
Ehi
1/1/19
56000
3
Ehi
01/01/2017
44000
4
Freeman
1/1/18
65000
5
Freeman
01/01/2017
57000
6
Freeman
1/1/19
69000
7
Smith
1/1/18
51000
8
Smith
1/1/19
56000
9
Smith
1/1/16
44000
È possibile ordinare le righe per ogni dipendente in ordine crescente (ASC) in base al campo della decorrenza (
Eff_Date
), in modo che lo stipendio più recente venga prima in ogni partizione.
Utilizzare questa espressione nel campo
Salary_Increase
per calcolare la variazione dello stipendio tra ogni modifica della decorrenza:
[Salary] - (LAG([Salary], 1, [Salary]) OVER( PARTITION BY [Employee_Name] ORDER BY [Eff_Date] ASC) )
Si ottengono i seguenti risultati:
row_ID
Employee_Name
Eff_Date
Stipendi
Salary_Increase
2
Ehi
1/1/19
56000
7000
1
Ehi
1/1/18
49000
5.000
3
Ehi
01/01/2017
44000
0
6
Freeman
1/1/19
69000
4.000
4
Freeman
1/1/18
65000
8000
5
Freeman
01/01/2017
57000
0
8
Smith
1/1/19
56000
5.000
7
Smith
1/1/18
51000
7000
9
Smith
1/1/16
44000
0