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

AVG

Descrizione

AVG
è una funzione di aggregazione della finestra che suddivide le righe in gruppi, ordina le righe in base a un campo e restituisce la media di tutti i valori numerici validi nel gruppo. Somma tutti i valori nel gruppo e li divide per il numero di righe valide (NON NULL). È possibile utilizzare
AVG
per calcolare le medie mobili.
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 (media per questa funzione) in ogni gruppo.

Sintassi

AVG
(
input_field
)
OVER
(
PARTITION BY
partitioning_field
[,
partitioning_field
]
ORDER BY
ordering_field
[ASC | DESC] [,
ordering_field
[ASC | DESC]]
RANGE
BETWEEN
value
PRECEDING
AND
CURRENT ROW
|
ROWS
win_boundary
|
BETWEEN
win_boundary
AND
win_boundary
)
where
win_boundary
can be:
UNBOUNDED PRECEDING
value
PRECEDING
UNBOUNDED FOLLOWING
value
FOLLOWING
CURRENT ROW

Valore restituito

Restituisce un valore di tipo
NUMERIC
o
DOUBLE
a seconda del tipo di
input_field
.

Parametri di input

input_field
Sono obbligatori. Campo in cui eseguire la funzione di aggregazione. È possibile utilizzare qualsiasi campo numerico o un campo Valuta.
OVER()
Obbligatorio
OVER
deve essere utilizzato all'interno di un
AVG
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. Tuttavia, quando si utilizza un campo è necessario utilizzare un tipo di campo numerico, ad esempio Intero o Numerico
RANGE
clausola
È 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.
RIGHE | RANGE
Sono obbligatori. Il
ROWS
e
RANGE
Le clausole definiscono il numero specifico di righe (rispetto alla riga corrente) all'interno della partizione specificando un frame della finestra. Il frame della finestra viene definito specificando i punti di inizio e di fine all'interno della partizione, noti come limiti della finestra. La cornice della finestra è l'insieme di righe di input in ogni partizione su cui calcolare l'espressione aggregata (media per questa funzione). La cornice della finestra può includere una, più o tutte le righe della partizione.
Entrambi
ROWS
e
RANGE
specificare l'intervallo di righe relativo alla riga corrente, ma
RANGE
opera logicamente sui valori (associazione logica) e
ROWS
opera fisicamente sulle righe del set di dati (associazione fisica).
RANGE
limita la cornice della finestra a contenere righe con valori all'interno dell'intervallo specificato, rispetto al valore corrente.
ROWS
limita la cornice della finestra a contenere righe che si trovano fisicamente accanto alla riga corrente.
Utilizzare
RANGE
per definire i limiti assoluti della finestra, ad esempio gli ultimi 3 mesi o il progressivo annuale. Quando si utilizza
RANGE
, il
ORDER BY
La clausola deve utilizzare un tipo di campo numerico, ad esempio Intero o Numerico.
Esempio: si supponga di avere un campo Intero chiamato MonthNum che rappresenta il numero del mese dell'anno (valori da 1 a 12). Per specificare tutti i valori degli ultimi 3 mesi, ordinare per MonthNum e utilizzare
RANGE BETWEEN 2 PRECEDING AND CURRENT ROW
. Questa clausola RANGE include il mese corrente e i due mesi precedenti, per un totale di 3 mesi.
Quando si pubblica un set di dati che contiene una funzione finestra utilizzando
RANGE
, il numero di righe nella finestra deve essere un massimo di 1000. Se una determinata finestra supera le 1000 righe, il job di pubblicazione non riesce.
win_boundary
Sono obbligatori. I limiti della finestra definiscono i punti di inizio e di fine della cornice della finestra. I limiti della finestra sono relativi alla riga corrente.
A
PRECEDING
La clausola definisce un limite della finestra inferiore alla riga corrente (il numero di righe da includere prima della riga corrente). Il
FOLLOWING
La clausola definisce un limite della finestra superiore alla riga corrente (il numero di righe da includere dopo la riga corrente).
Se si specifica un solo limite della finestra, il sistema utilizza la riga corrente come altro limite nel riquadro della finestra (il limite superiore o inferiore a seconda della sintassi dell'espressione). Il
UNBOUNDED
include tutte le righe nella direzione specificata. Quando è necessario specificare sia l'inizio che la fine di un frame di una finestra, utilizzare
BETWEEN
e
AND
parole chiave
Quando si specifica un numero specifico di righe, il
valore
deve essere inferiore o uguale a 100.
Esempio:
ROWS 2 PRECEDING
significa che la dimensione della finestra è di 3 righe, a partire da 2 righe che precedono fino al e includono la riga corrente.
Esempio:
ROWS UNBOUNDED FOLLOWING
significa che la finestra inizia con la riga corrente e include la riga corrente e tutte le righe successive alla riga corrente.

Esempi

È possibile calcolare la media mobile delle vendite (media mobile o media mobile) per ogni dipendente:
AVG([Sales]) OVER( PARTITION BY [Employee] ORDER BY [SalesDate] DESC ROWS UNBOUNDED PRECEDING)
È possibile calcolare le vendite medie complessive per ogni riga della partizione, indipendentemente dai campi nella clausola ORDER BY:
AVG([Sales]) OVER( PARTITION BY [Employee] ORDER BY [SalesDate] DESC ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
È possibile calcolare la media mobile su 12 mesi:
AVG([fieldA]) OVER( PARTITION BY [fieldB] ORDER BY [Month] RANGE 11 PRECEDING)
Il
Month
Il campo deve essere di tipo numerico, ad esempio Intero o Numerico.
È possibile calcolare la media annuale precedente:
AVG([fieldA]) OVER( PARTITION BY [fieldB] ORDER BY [Year] RANGE 1 PRECEDING)
Il
Year
Il campo deve essere di tipo numerico, ad esempio Intero o Numerico.