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 APPROX_MEDIAN Funktion liefert einen ungefähren Median oder ein 50. Perzentil von nicht-numerischenNULL Werten. Sie können sie sowohl als Aggregatfunktion als auch als Fensterfunktion (Analysefunktion) verwenden:
- Aggregierte Nutzung: Gibt einen ungefähren Median für eine gesamte Gruppe zurück.
- Fensternutzung: Gibt für jede Partition einen ungefähren Median zurück, während die Ausgabe auf Zeilenebene erhalten bleibt.
Transact-SQL-Syntaxkonventionen
Syntax
Syntax der Aggregationsfunktion:
APPROX_MEDIAN ( numeric_expression )
Analysefunktionssyntax:
APPROX_MEDIAN ( numeric_expression ) OVER ( [ <partition_by_clause> ] )
Argumente
numeric_expression
Der numerische Ausdruck, dessen approximativer Median berechnet wird. Unterstützte exakte numerische Typen sind int, bigint, smallint, , tinyint, smallmoneynumericdecimalund 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 APPROX_MEDIAN.
Weitere Informationen finden Sie unter SELECT - OVER-Klausel (Transact-SQL).
Rückgabetypen
Gibt float(53) zurück.
Hinweise
APPROX_MEDIAN schätzt das kontinuierliche 50. Perzentil der geordneten Nicht-EingabewerteNULL . Verwenden Sie MEDIAN , wenn Sie ein genaues Ergebnis benötigen.
Ungefähre Ergebnisse können leicht von den exakten MEDIAN Ergebnissen abweichen und können je nach Ausführung durch Ausführungspläne und parallele Merge-Pfade variieren.
APPROX_MEDIAN ist nicht deterministisch. Weitere Informationen finden Sie unter Deterministische und nicht deterministische Funktionen.
NULL Werte werden ignoriert. Wenn alle Eingabewerte sindNULL, oder wenn keine Zeilen qualifizieren, APPROX_MEDIAN gibt .NULL Wenn ANSI_WARNINGS , ONerzeugt das Eliminieren NULL von Werten die standardmäßige aggregierte Warnung.
APPROX_MEDIAN soll Latenz und Speicherverbrauch im Vergleich zu exakten MEDIAN Berechnungen großer Datensätze reduzieren.
DISTINCT wird nicht unterstützt. Zeichen-, Datum-, Uhrzeit- und Datumszeit-Ausdrücke werden nicht unterstützt.
Die APPROX_MEDIAN Funktion ist in Fabric Data Warehouse und im SQL-Analyse-Endpunkt Fabric Items verfügbar. Die Funktion APPROX_MEDIAN wird nicht in SQL Server, Azure SQL-Datenbank, Azure SQL Managed Instance oder SQL Database in Fabric unterstützt.
Anwendungsfall
APPROX_MEDIAN Verwendung für groß angelegte Dashboards, explorative Analysen und gruppierte Berichte, bei denen eine genaue Schätzung ausreicht und die Abfrageleistung wichtiger ist als ein exakter Median. Gängige Beispiele sind ungefähre mittlere Bestellwerte, Servicelatenz und Telemetriemessungen.
Examples
A. Berechnen Sie einen aggregierten approximativen Median
Dieses Beispiel schätzt den Median von acht Werten.
SELECT APPROX_MEDIAN(value) AS ApproxMedianValue
FROM (VALUES (1), (2), (3), (4), (5), (6), (7), (8)) AS t(value);
Das Ergebnis liegt nahe am exakten Median von 4.5, kann aber leicht variieren.
B. Berechnen Sie für jede Gruppe einen ungefähren Median
Dieses Beispiel schätzt die mittlere Bestellmenge für jede Verkaufsregion.
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. NULL-Werte ignorieren
Dieses Beispiel ignoriert NULL Werte bei der Schätzung des Medians.
SELECT APPROX_MEDIAN(value) AS ApproxMedianValue
FROM (VALUES (1), (2), (NULL), (3), (4)) AS t(value);
Ist jeder Eingabewert NULL, so gibt die Funktion . zurück.NULL
D. Berechnen Sie einen approximativen Median eines partitionierten Fensters
Dieses Beispiel fügt die ungefähre Median-Latenz für jeden Dienst zu jeder Anfragezeile hinzu.
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;