APPROX_PERCENTILE_DISC (Transact-SQL)
Gilt für: SQL Server 2022 (16.x) Azure SQL-Datenbank Azure SQL verwaltete Instanz SQL Analytics-Endpunkt in Microsoft Fabric Warehouse in Microsoft Fabric Warehouse in Microsoft Fabric
Diese Funktion gibt den Wert aus dem Satz von Werten in einer Gruppe auf Grundlage des bereitgestellten Quantils und der Sortierspezifikation zurück. Da dies eine Näherungsfunktion ist, läge die Ausgabe mit einer gewissen Zuverlässigkeit (Konfidenz) innerhalb der rangbasierten Fehlergrenze. Da dieses ungefähre Quantil auf einer diskreten Verteilung der Spaltenwerte basiert, entspräche der Ausgabewert einem der spezifischen Werte in der Spalte. Diese Funktion kann als Alternative zu PERCENTILE_DISC für große Datasets verwendet werden, wenn vernachlässigbare Fehler bei schnellerer Antwort akzeptabel sind im Vergleich zu einem präzisen Quantilwert mit langsamer Antwortzeit.
Transact-SQL-Syntaxkonventionen
Syntax
APPROX_PERCENTILE_DISC (numeric_literal)
WITHIN GROUP (ORDER BY order_by_expression [ASC|DESC])
Argument
numeric_literal
Das zu berechnende Quantil. Der Wert muss zwischen 0,0 und 1,0 liegen. Um das 10. Quantil zu berechnen, wäre der übergebene Wert 0,10.
order_by_expression
Gibt eine Liste von numerischen Werten für die Sortierung und Berechnung des Quantils an. Die Standardsortierreihenfolge ist aufsteigend (ASC). Nur numerische Datentypen sind zulässig. Der Ausdruck muss einen unterstützten exakten oder angenäherten numerischen Typ ergeben. Andere Datentypen sind nicht zulässig. Unterstützte exakte numerische Typen sind: int, bigint, smallint, tinyint, bit, smallmoney und money. Unterstützte angenäherte numerische Typen sind float und real. Dezimal- und Float-Datentypen werden nicht unterstützt.
Rückgabetypen
Der Rückgabetyp wird durch den order_by_expression-Typ bestimmt.
Hinweise
Alle NULL-Werte im Dataset werden ignoriert.
Quantil-Näherungsfunktionen verwenden KLL Sketch. Die Skizze (Sketch) wird erstellt, indem der Datenstrom gelesen wird.
Diese Funktion stellt rangbasierte Fehlergarantien bereit, keine wertebasierten. Die Funktionsimplementierung garantiert eine Fehlerquote von bis zu 1,33 % bei einer Wahrscheinlichkeit von 99 %.
Bekannte Verhaltensweisen
Die Ausgabe der Funktionen ist in allen Ausführungen möglicherweise nicht identisch. Der für diese Funktionen verwendete Algorithmus ist KLL Sketch, bei dem es sich um einen Zufallsalgorithmus handelt. Jedes Mal, wenn die Skizze erstellt wird, werden Zufallswerte ausgewählt. Diese Funktionen stellen rangbasierte Fehlergarantien bereit, keine wertebasierten.
Die Funktionsimplementierung garantiert Fehlergrenzen von bis zu 1,33 % bei einer Wahrscheinlichkeit von 99 %.
Kompatibilitätsunterstützung
Unter Kompatibilitätsgrad 110 und höher ist WITHIN GROUP ein reserviertes Schlüsselwort. Weitere Informationen finden Sie unter ALTER DATABASE-Kompatibilitätsgrad (Transact-SQL).
Beispiele
Im folgenden Beispiel wird eine Tabelle erstellt, aufgefüllt und dann die Beispielabfrage ausgeführt.
SET NOCOUNT ON
GO
DROP TABLE IF EXISTS tblEmployee
GO
CREATE TABLE tblEmployee (
EmplId INT IDENTITY(1,1) PRIMARY KEY CLUSTERED,
DeptId INT,
Salary int);
GO
INSERT INTO tblEmployee
VALUES (1, 31),(1, 33), (1, 18), (2, 25),(2, 35),(2, 10), (2, 10),(3,1), (3,NULL), (4,NULL), (4,NULL)
GO
SELECT DeptId,
APPROX_PERCENTILE_DISC(0.10) WITHIN GROUP(ORDER BY Salary) AS 'P10',
APPROX_PERCENTILE_DISC(0.90) WITHIN GROUP(ORDER BY Salary) AS 'P90'
FROM tblEmployee
GROUP BY DeptId