Funzione finestra MEDIAN - Amazon Redshift

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à.

Funzione finestra MEDIAN

Calcola il valore mediano per l'intervallo di valori in una finestra o partizione. I valori NULL nell'intervallo vengono ignorati.

MEDIAN è una funzione di distribuzione inversa che presuppone un modello di distribuzione continua.

MEDIAN è una funzione solo del nodo di calcolo. La funzione restituisce un errore se la query non fa riferimento a una tabella definita dall'utente o a una tabella di sistema di Amazon Redshift.

Sintassi

MEDIAN ( median_expression ) OVER ( [ PARTITION BY partition_expression ] )

Argomenti

median_expression

Un'espressione, come ad esempio un nome di colonna, che fornisce i valori per cui determinare il valore medio. L'espressione deve avere o un tipo di dati numerici o datetime oppure essere implicitamente convertibile in uno.

OVER

Una clausola che specifica il partizionamento della finestra. La clausola OVER non può contenere una specifica del frame della finestra o dell'ordinamento della finestra.

PARTITION BY partition_expression

Facoltativo. Un'espressione che imposta l'intervallo di registrazioni per ciascun gruppo nella clausola OVER.

Tipi di dati

Il tipo di ritorno è determinato dal tipo di dati di median_expression. La seguente tabella mostra il tipo di restituzione per ciascun median_expression tipo di dati.

Tipo di input Tipo restituito
INT2, INT4, INT8, NUMERIC, DECIMAL DECIMAL
FLOAT, DOUBLE DOUBLE
DATE DATE

Note per l'utilizzo

Se l'argomento median_expression è un tipo di dati DECIMAL definito con la precisione massima di 38 cifre, è possibile che MEDIAN restituirà un risultato inaccurato o un errore. Se il valore di ritorno della funzione MEDIAN supera le 38 cifre, il risultato viene troncato per adattarsi, il che causa una perdita della precisione. Se, durante l'interpolazione, un risultato intermedio supera la precisione massima, si verifica un'eccedenza numerica e la funzione restituisce un errore. Per evitare queste condizioni, consigliamo di utilizzare un tipo di dati con una precisione inferiore o di assegnare l'argomento median_expression a una precisione inferiore.

Ad esempio, una funzione SUM con un argomento DECIMAL restituisce una precisione predefinita di 38 cifre. Il ridimensionamento del risultato coincide con il ridimensionamento dell'argomento. Quindi, ad esempio, un SUM di una colonna DECIMAL(5,2) restituisce un tipo di dati DECIMAL(38,2).

L'esempio seguente utilizza una funzione SUM nell'argomento median_expression di una funzione MEDIAN. Il tipo di dati della colonna PRICEPAID è DECIMAL (8,2), quindi la funzione SUM restituisce DECIMAL (38,2).

select salesid, sum(pricepaid), median(sum(pricepaid)) over() from sales where salesid < 10 group by salesid;

Per evitare una perdita potenziale di precisione o un errore di sovraccarico, assegnare il risultato a un tipo di dati DECIMAL con una precisione inferiore, come mostra il seguente esempio.

select salesid, sum(pricepaid), median(sum(pricepaid)::decimal(30,2)) over() from sales where salesid < 10 group by salesid;

Esempi

L'esempio seguente calcola la quantità media di vendite per ciascun venditore:

select sellerid, qty, median(qty) over (partition by sellerid) from winsales order by sellerid; sellerid qty median --------------------------- 1 10 10.0 1 10 10.0 1 30 10.0 2 20 20.0 2 20 20.0 3 10 17.5 3 15 17.5 3 20 17.5 3 30 17.5 4 10 25.0 4 40 25.0

Per una descrizione della tabella WINSALES, consultare Tabella di esempio per gli esempi della funzione finestra.