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à.
MEDIANfunzione
Calcola il valore mediano per l'intervallo di valori. I valori NULL
nell'intervallo vengono ignorati.
MEDIANè una funzione di distribuzione inversa che presuppone un modello di distribuzione continua.
MEDIANè un caso speciale di. PERCENTILE_CONT
Sintassi
MEDIAN(median_expression)
Argomenti
- median_expression
-
L'espressione o colonna di destinazione su cui viene eseguita la funzione.
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.
Input type (Tipo input) | Tipo restituito |
---|---|
INT2 , INT4 , INT8 , NUMERIC , DECIMAL |
DECIMAL |
FLOAT , DOUBLE |
DOUBLE |
DATE |
DATE |
TIMESTAMP |
TIMESTAMP |
TIMESTAMPTZ |
TIMESTAMPTZ |
Note per l'utilizzo
Se l'argomento median_expression è un tipo di DECIMAL
dati definito con la precisione massima di 38 cifre, è possibile che MEDIAN restituisca un risultato impreciso o un errore. Se il valore restituito dalla MEDIAN funzione supera le 38 cifre, il risultato viene troncato per adattarsi, con conseguente perdita di 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.
Se un'istruzione include più chiamate a funzioni aggregate basate sull'ordinamento (LISTAGG, PERCENTILE _ oMEDIAN)CONT, tutte devono utilizzare gli stessi valori BY. ORDER Nota che MEDIAN applica un ordine implicito per il valore dell'espressione.
Ad esempio, la seguente istruzione restituisce un errore.
SELECT TOP 10 salesid, SUM(pricepaid), PERCENTILE_CONT(0.6) WITHIN GROUP(ORDER BY salesid), MEDIAN(pricepaid) FROM sales GROUP BY salesid, pricepaid;
An error occurred when executing the SQL command: SELECT TOP 10 salesid, SUM(pricepaid), PERCENTILE_CONT(0.6) WITHIN GROUP(ORDER BY salesid), MEDIAN(pricepaid) FROM sales GROUP BY salesid, pricepaid; ERROR: within group ORDER BY clauses for aggregate functions must be the same
La seguente istruzione viene eseguita normalmente.
SELECT TOP 10 salesid, SUM(pricepaid), PERCENTILE_CONT(0.6) WITHIN GROUP(ORDER BY salesid), MEDIAN(salesid) FROM sales GROUP BY salesid, pricepaid;
Esempi
I seguenti esempi utilizzano il database TICKIT di esempio. Per ulteriori informazioni, consulta Database di esempio.
L'esempio seguente mostra che MEDIAN produce gli stessi risultati di PERCENTILE _ CONT (0.5).
SELECT TOP 10 DISTINCT sellerid, qtysold, PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY qtysold), MEDIAN(qtysold) FROM sales GROUP BY sellerid, qtysold;
+----------+---------+-----------------+--------+ | sellerid | qtysold | percentile_cont | median | +----------+---------+-----------------+--------+ | 2 | 2 | 2 | 2 | | 26 | 1 | 1 | 1 | | 33 | 1 | 1 | 1 | | 38 | 1 | 1 | 1 | | 43 | 1 | 1 | 1 | | 48 | 2 | 2 | 2 | | 48 | 3 | 3 | 3 | | 77 | 4 | 4 | 4 | | 85 | 4 | 4 | 4 | | 95 | 2 | 2 | 2 | +----------+---------+-----------------+--------+
L'esempio seguente trova la quantità media venduta per ogni sellerid.
SELECT sellerid, MEDIAN(qtysold) FROM sales GROUP BY sellerid ORDER BY sellerid LIMIT 10;
+----------+--------+ | sellerid | median | +----------+--------+ | 1 | 1.5 | | 2 | 2 | | 3 | 2 | | 4 | 2 | | 5 | 1 | | 6 | 1 | | 7 | 1.5 | | 8 | 1 | | 9 | 4 | | 12 | 2 | +----------+--------+
Per verificare i risultati della query precedente per il primo sellerid, utilizza l'esempio seguente.
SELECT qtysold FROM sales WHERE sellerid=1;
+---------+ | qtysold | +---------+ | 2 | | 1 | +---------+