Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:Endpoint di analisi SQL in Microsoft Fabric e Warehouse in Microsoft Fabric
La MEDIAN funzione restituisce la mediana esatta, ovvero il 50° percentile, dei valori nonNULL numerici. È possibile usarlo sia come funzione di aggregazione che come funzione finestra (analitica):
- Utilizzo aggregato: restituisce la mediana per un intero gruppo.
- Utilizzo delle finestre: restituisce la mediana per ogni partizione mantenendo l'output a livello riga.
Convenzioni relative alla sintassi Transact-SQL
Syntax
Sintassi della funzione di aggregazione:
MEDIAN ( numeric_expression )
Sintassi della funzione analitica:
MEDIAN ( numeric_expression ) OVER ( [ <partition_by_clause> ] )
Arguments
numeric_expression
L'espressione numerica la cui mediana è calcolata. I tipi numerici esatti supportati sono int, bigint, smallint, tinyint, decimalnumeric, bit, , smallmoney, e money. I tipi numerici approssimati supportati sono float e real.
Clausola OVER
Il partition_by_clause divide il set di risultati prodotto dalla FROM clausola in partizioni e la funzione viene applicata a ogni partizione.
Se non specifichi partition_by_clause, la funzione tratta tutte le righe dell'insieme di risultati della query come una singola partizione.
La OVER clausola non supporta ORDER BY, ROWS, o RANGE per MEDIAN.
Per altre informazioni, vedere clausola SELECT - OVER (Transact-SQL).
Tipi restituiti
Restituisce float(53).
Osservazioni:
MEDIAN Calcola il 50° percentile continuo dei valori ordinati non inNULL input. Per un numero pari di valori di input, la funzione interpola tra i due valori centrali. Il risultato potrebbe non essere un valore presente nelle righe di input.
MEDIAN è equivalente a PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY numeric_expression) per l'uso aggregato. La forma analitica ha una semantica percentil-continua equivalente all'interno di ogni partizione.
NULL i valori vengono ignorati. Se tutti i valori di input sono NULL, o se nessuna riga è qualificata, MEDIAN restituisce NULL. Quando ANSI_WARNINGS è ON, eliminare NULL i valori produce l'avvertimento aggregato standard.
MEDIAN è non deterministico perché i calcoli in virgola mobile in percorsi di esecuzione paralleli possono produrre lievi variazioni. Per altre informazioni, vedere Funzioni deterministiche e non deterministiche.
DISTINCT non è supportata. Le espressioni di personaggi, data, ora e data-time non sono supportate.
La MEDIAN funzione è disponibile in Fabric Data Warehouse e nell'endpoint di analisi SQL di Fabric elementi. La MEDIAN funzione non è supportata in SQL Server, database SQL di Azure, Istanza gestita di SQL di Azure o database SQL in Fabric.
Caso di utilizzo
Da usare MEDIAN quando una media potrebbe essere distorta da valori insolitamente alti o bassi. Ad esempio, il valore mediano dell'ordine, il tempo di risposta o l'importo della richiesta spesso rappresentano un'osservazione tipica più chiaramente della media aritmetica. La forma aggregata riassume i gruppi, mentre la forma analitica aggiunge un benchmark di partizione a ogni riga di dettaglio.
Examples
A. Calcola una mediana aggregata
Questo esempio restituisce la mediana di otto valori. Poiché l'ingresso ha un numero pari di righe, MEDIAN interpola tra 4 e 5.
SELECT MEDIAN(value) AS MedianValue
FROM (VALUES (1), (2), (3), (4), (5), (6), (7), (8)) AS t(value);
Il risultato è 4.5.
B. Calcola una mediana per ogni gruppo
Questo esempio calcola l'importo mediano degli ordini per ogni regione di vendita.
WITH SalesOrders AS (
SELECT *
FROM (VALUES
('North', 120.00),
('North', 220.00),
('North', 320.00),
('South', 150.00),
('South', 250.00),
('South', 450.00)
) AS v(region, order_amount)
)
SELECT
region,
MEDIAN(order_amount) AS MedianOrderAmount
FROM SalesOrders
GROUP BY region;
C. Ignora i valori NULL
Questo esempio ignora l'input NULL e calcola la mediana dai valori rimanenti.
SELECT MEDIAN(value) AS MedianValue
FROM (VALUES (1), (2), (NULL), (3), (4)) AS t(value);
Se ogni valore di input è NULL, la funzione restituisce NULL.
D. Calcola una mediana a finestra partizionata
Questo esempio aggiunge la latenza mediana per ogni servizio a ogni riga di richiesta.
WITH ServiceLatency AS (
SELECT *
FROM (VALUES
('Checkout', 'req-001', 180),
('Checkout', 'req-002', 220),
('Checkout', 'req-003', 260),
('Search', 'req-010', 90),
('Search', 'req-011', 110),
('Search', 'req-012', 130)
) AS v(service, request_id, latency_ms)
)
SELECT
service,
request_id,
latency_ms,
MEDIAN(latency_ms) OVER (PARTITION BY service) AS ServiceMedianLatency
FROM ServiceLatency;