Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
La funzione finestra AVG restituisce la media (media aritmetica) dei valori di espressione di input. La funzione AVG funziona con i valori numerici e ignora i valori NULL.
Sintassi
AVG ( [ALL ] expression ) OVER ( [ PARTITION BY expr_list ] [ ORDER BY order_list frame_clause ] )
Argomenti
- expression
-
L'espressione o colonna di destinazione su cui viene eseguita la funzione.
- ALL
-
Con l'argomento ALL, la funzione mantiene tutti i valori duplicati dall'espressione per il conteggio. ALL è il valore predefinito. DISTINCT non è supportato.
- OVER
-
Specifica le clausole finestra per le funzioni di aggregazione. La clausola OVER distingue le funzioni di aggregazione delle finestre dalle normali funzioni di aggregazione dell'insieme.
- PARTITION BY expr_list
-
Definisce la finestra per la funzione AVG in termini di una o più espressioni.
- ORDER BY order_list
-
Ordina le righe all'interno di ogni partizione. Se non viene specificato nessun PARTITION BY, ORDER BY utilizza l'intera tabella.
- frame_clause
-
Se una clausola ORDER BY viene utilizzata per una funzione di aggregazione, è necessaria una clausola del frame esplicita. La clausola frame raffina l'insieme di righe in una finestra della funzione, includendo o escludendo insieme di righe all'interno del risultato ordinato. La clausola frame è composta dalla parola chiave ROWS e dagli specificatori associati. Per informazioni, consultare Riepilogo della sintassi della funzione finestra.
Tipi di dati
I tipi di argomenti supportati dalla funzione AVG sono SMALLINT, INTEGER, BIGINT, NUMERIC, DECIMAL, REAL e DOUBLE PRECISION.
I tipi di restituzione supportati dalla funzione AVG sono:
-
BIGINT per gli argomenti SMALLINT oppure INTEGER
-
NUMERIC per gli argomenti BIGINT
-
DOUBLE PRECISION per argomenti del numero in virgola mobile
Esempi
Nel seguente esempio viene calcolata una media mobile delle quantità vendute per data; i risultati sono ordinati per ID data e ID vendite:
select salesid, dateid, sellerid, qty,
avg(qty) over
(order by dateid, salesid rows unbounded preceding) as avg
from winsales
order by 2,1;
salesid | dateid | sellerid | qty | avg
---------+------------+----------+-----+-----
30001 | 2003-08-02 | 3 | 10 | 10
10001 | 2003-12-24 | 1 | 10 | 10
10005 | 2003-12-24 | 1 | 30 | 16
40001 | 2004-01-09 | 4 | 40 | 22
10006 | 2004-01-18 | 1 | 10 | 20
20001 | 2004-02-12 | 2 | 20 | 20
40005 | 2004-02-12 | 4 | 10 | 18
20002 | 2004-02-16 | 2 | 20 | 18
30003 | 2004-04-18 | 3 | 15 | 18
30004 | 2004-04-18 | 3 | 20 | 18
30007 | 2004-09-07 | 3 | 30 | 19
(11 rows)
Per una descrizione della tabella WINSALES, consultare Tabella di esempio per gli esempi della funzione finestra.