Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL-Analyseendpunkt in Microsoft Fabric und Warehouse in Microsoft Fabric
Die Funktion MEDIAN gibt den exakten Median oder das 50. Perzentil der nicht-numerischenNULL Werte zurück. Sie können sie sowohl als Aggregatfunktion als auch als Fensterfunktion (Analysefunktion) verwenden:
- Aggregierte Nutzung: Gibt den Median für eine ganze Gruppe zurück.
- Fensternutzung: Gibt den Median für jede Partition zurück, während die Ausgabe auf Zeilenebene erhalten bleibt.
Transact-SQL-Syntaxkonventionen
Syntax
Syntax der Aggregationsfunktion:
MEDIAN ( numeric_expression )
Analysefunktionssyntax:
MEDIAN ( numeric_expression ) OVER ( [ <partition_by_clause> ] )
Argumente
numeric_expression
Der numerische Ausdruck, dessen Median berechnet wird. Unterstützte exakte numerische Typen sind int, bigint, , tinyintsmallint, decimalsmallmoneynumericbit, und money. Unterstützte approximative numerische Typen sind float und real.
OVER-Klausel
Die partition_by_clause dividiert das von der FROM Klausel erzeugte Resultset in Partitionen, und die Funktion wird auf jede Partition angewendet.
Wenn Sie partition_by_clause nicht spezifizieren, behandelt die Funktion alle Zeilen der Abfrageergebnismenge als eine einzige Partition.
Die Klausel OVER unterstützt ORDER BYnicht , ROWS, oder RANGE für MEDIAN.
Weitere Informationen finden Sie unter SELECT - OVER-Klausel (Transact-SQL).
Rückgabetypen
Gibt float(53) zurück.
Hinweise
MEDIAN berechnet das kontinuierliche 50. Perzentil der geordneten Nicht-EingabewerteNULL . Für eine gerade Anzahl von Eingabewerten interpoliert die Funktion zwischen den beiden mittleren Werten. Das Ergebnis ist möglicherweise kein Wert, der in den Eingabezeilen existiert.
MEDIAN ist äquivalent zu PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY numeric_expression) für die aggregierte Nutzung. Die analytische Form besitzt innerhalb jeder Partition äquivalente percentilkontinuierliche Semantik.
NULL Werte werden ignoriert. Wenn alle Eingabewerte sindNULL, oder wenn keine Zeilen qualifizieren, MEDIAN gibt .NULL Wenn ANSI_WARNINGS , ONerzeugt das Eliminieren NULL von Werten die standardmäßige aggregierte Warnung.
MEDIAN ist nichtdeterministisch, da Gleitkommaberechnungen in parallelen Ausführungspfaden leichte Schwankungen verursachen können. Weitere Informationen finden Sie unter Deterministische und nicht deterministische Funktionen.
DISTINCT wird nicht unterstützt. Zeichen-, Datum-, Uhrzeit- und Datumszeit-Ausdrücke werden nicht unterstützt.
Die MEDIAN Funktion ist in Fabric Data Warehouse und im SQL-Analyse-Endpunkt Fabric Items verfügbar. Die Funktion MEDIAN wird nicht in SQL Server, Azure SQL-Datenbank, Azure SQL Managed Instance oder SQL Database in Fabric unterstützt.
Anwendungsfall
Verwendet MEDIAN , wenn ein Durchschnitt durch ungewöhnlich hohe oder niedrige Werte verzerrt werden könnte. Zum Beispiel stellt der mittlere Auftragswert, die Antwortzeit oder der Betrag der Anspruchssumme oft eine typische Beobachtung klarer dar als der arithmetische Mittelwert. Die aggregierte Form fasst Gruppen zusammen, und die analytische Form fügt jeder Detailzeile einen Partitions-Benchmark hinzu.
Examples
A. Berechnen Sie einen aggregierten Median
Dieses Beispiel liefert den Median von acht Werten. Da die Eingabe eine gerade Anzahl von Zeilen hat, MEDIAN interpoliert zwischen 4 und 5.
SELECT MEDIAN(value) AS MedianValue
FROM (VALUES (1), (2), (3), (4), (5), (6), (7), (8)) AS t(value);
Das Ergebnis ist 4.5.
B. Berechnen Sie für jede Gruppe einen Median
Dieses Beispiel berechnet den mittleren Bestellbetrag für jede Vertriebsregion.
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. NULL-Werte ignorieren
Dieses Beispiel ignoriert die NULL Eingabe und berechnet den Median aus den verbleibenden Werten.
SELECT MEDIAN(value) AS MedianValue
FROM (VALUES (1), (2), (NULL), (3), (4)) AS t(value);
Ist jeder Eingabewert NULL, so gibt die Funktion . zurück.NULL
D. Berechnung eines partitionierten Fenstermedians
Dieses Beispiel addiert die mediane Latenz für jeden Dienst zu jeder Anfragezeile.
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;