Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL-analysslutpunkt i Microsoft Fabric och Warehouse i Microsoft Fabric
Funktionen MEDIAN returnerar den exakta medianen, eller 50:e percentilen, av icke-numeriskaNULL värden. Du kan använda den som både en aggregeringsfunktion och en funktion för fönster (analys):
- Aggregerad användning: Returnerar medianen för hela gruppen.
- Fönsteranvändning: Returnerar medianen för varje partition samtidigt som radnivåutdata bevaras.
Transact-SQL syntaxkonventioner
Syntax
Syntax för sammansättningsfunktionen:
MEDIAN ( numeric_expression )
Analysfunktionssyntax:
MEDIAN ( numeric_expression ) OVER ( [ <partition_by_clause> ] )
Arguments
numeric_expression
Det numeriska uttrycket vars median beräknas. Stödda exakta numeriska typer är int, bigint, , tinyintsmallint, , numeric, smallmoneydecimalbitoch money. Stödda approximativa numeriska typer är float och real.
OVER-sats
Partition_by_clause delar upp resultatuppsättningen FROM som genereras av -satsen i partitioner och funktionen tillämpas på varje partition.
Om du inte specificerar partition_by_clause behandlar funktionen alla rader i frågeresultatuppsättningen som en enda partition.
Klausulen OVER stöder ORDER BYinte , ROWS, eller RANGE för MEDIAN.
Mer information finns i SELECT - OVER-satsen (Transact-SQL).
Returtyper
Returnerar float(53).
Remarks
MEDIAN beräknar den kontinuerliga 50:e percentilen av de ordnade icke-indatavärdenaNULL . För ett jämnt antal indatavärden interpolerar funktionen mellan de två mittersta värdena. Resultatet kanske inte är ett värde som finns i indataraderna.
MEDIAN är ekvivalent med PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY numeric_expression) för aggregerad användning. Den analytiska formen har ekvivalent percentilkontinuerlig semantik inom varje partition.
NULL värden ignoreras. Om alla indatavärden är NULL, eller om inga rader kvalificerar, MEDIAN returnerar NULL. När ANSI_WARNINGS är ON, ger eliminering NULL av värden den standardiserade aggregerade varningen.
MEDIAN är icke-deterministisk eftersom flyttalsberäkningar i parallella exekveringsvägar kan ge små variationer. Mer information finns i deterministiska och icke-terministiska funktioner.
DISTINCT stöds inte. Tecken-, datum-, tid- och datumtidsuttryck stöds inte.
Funktionen MEDIAN finns tillgänglig i Fabric Data Warehouse och i SQL-analysändpunkten för Fabric objekt. Funktionen MEDIAN stöds inte i SQL Server, Azure SQL Database, Azure SQL Managed Instance eller SQL Database in Fabric.
Användningsfall
Använd MEDIAN när ett medelvärde kan förvrängas av ovanligt höga eller låga värden. Till exempel representerar medianordervärde, svarstid eller skadebelopp ofta en typisk observation tydligare än det aritmetiska medelvärdet. Den aggregerade formen sammanfattar grupper, och den analytiska formen lägger till en partitionsbenchmark till varje detaljrad.
Examples
A. Beräkna en aggregerad median
Detta exempel returnerar medianvärdet av åtta. Eftersom indatan har ett jämnt antal rader, MEDIAN interpolerar mellan 4 och 5.
SELECT MEDIAN(value) AS MedianValue
FROM (VALUES (1), (2), (3), (4), (5), (6), (7), (8)) AS t(value);
Resultatet är 4.5.
B. Beräkna en median för varje grupp
Detta exempel beräknar medianorderbeloppet för varje försäljningsregion.
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. Ignorera NULL-värden
Detta exempel ignorerar NULL indata och beräknar medianen från de återstående värdena.
SELECT MEDIAN(value) AS MedianValue
FROM (VALUES (1), (2), (NULL), (3), (4)) AS t(value);
Om varje indatavärde är NULL, returnerar NULLfunktionen .
D. Beräkna en partitionerad fönstermedian
Detta exempel lägger till medianlatensen för varje tjänst till varje förfrågningsrad.
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;