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 APPROX_MEDIAN funzione restituisce una mediana approssimativa, ovvero il 50° percentile, di valori nonNULL numerici. È possibile usarlo sia come funzione di aggregazione che come funzione finestra (analitica):
- Uso aggregato: restituisce una mediana approssimativa per un intero gruppo.
- Utilizzo delle finestre: restituisce una mediana approssimativa per ogni partizione mantenendo l'output a livello riga.
Convenzioni relative alla sintassi Transact-SQL
Syntax
Sintassi della funzione di aggregazione:
APPROX_MEDIAN ( numeric_expression )
Sintassi della funzione analitica:
APPROX_MEDIAN ( numeric_expression ) OVER ( [ <partition_by_clause> ] )
Arguments
numeric_expression
L'espressione numerica la cui mediana approssimativa viene calcolata. I tipi numerici esatti supportati sono int, bigint, smallint, tinyint, decimalnumeric, , 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 APPROX_MEDIAN.
Per altre informazioni, vedere clausola SELECT - OVER (Transact-SQL).
Tipi restituiti
Restituisce float(53).
Osservazioni:
APPROX_MEDIAN stima il 50° percentile continuo dei valori ordinati non inNULL input. Usa MEDIANA quando hai bisogno di un risultato esatto.
I risultati approssimati possono differire leggermente da quelli esatti MEDIAN e possono variare tra le esecuzioni a causa dei piani di esecuzione e dei percorsi di fusione paralleli.
APPROX_MEDIAN è non deterministico. Per altre informazioni, vedere Funzioni deterministiche e non deterministiche.
NULL i valori vengono ignorati. Se tutti i valori di input sono NULL, o se nessuna riga è qualificata, APPROX_MEDIAN restituisce NULL. Quando ANSI_WARNINGS è ON, eliminare NULL i valori produce l'avvertimento aggregato standard.
APPROX_MEDIAN è pensato per ridurre la latenza e l'uso di memoria rispetto ai calcoli esatti MEDIAN su grandi dataset.
DISTINCT non è supportata. Le espressioni di personaggi, data, ora e data-time non sono supportate.
La APPROX_MEDIAN funzione è disponibile in Fabric Data Warehouse e nell'endpoint di analisi SQL di Fabric elementi. La APPROX_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 utilizzare APPROX_MEDIAN per dashboard su larga scala, analisi esplorative e report raggruppati dove una stima ravvicinata è sufficiente e le prestazioni delle query contano più di una mediana esatta. Esempi comuni includono il valore medio approssimato dell'ordine, la latenza del servizio e le misurazioni della telemetria.
Examples
A. Calcolare una mediana approssimativa aggregata
Questo esempio stima la mediana di otto valori.
SELECT APPROX_MEDIAN(value) AS ApproxMedianValue
FROM (VALUES (1), (2), (3), (4), (5), (6), (7), (8)) AS t(value);
Il risultato è vicino alla mediana esatta di 4.5, ma può variare leggermente.
B. Calcola una mediana approssimativa per ciascun gruppo
Questo esempio stima 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,
APPROX_MEDIAN(order_amount) AS ApproxMedianOrderAmount
FROM SalesOrders
GROUP BY region;
C. Ignora i valori NULL
Questo esempio ignora NULL i valori quando si stima la mediana.
SELECT APPROX_MEDIAN(value) AS ApproxMedianValue
FROM (VALUES (1), (2), (NULL), (3), (4)) AS t(value);
Se ogni valore di input è NULL, la funzione restituisce NULL.
D. Calcolare una mediana approssimativa di una finestra partizionata
Questo esempio aggiunge la latenza mediana approssimativa per ogni servizio a ogni riga di richieste.
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,
APPROX_MEDIAN(latency_ms) OVER (PARTITION BY service) AS ServiceApproxMedianLatency
FROM ServiceLatency;