APPROX_PERCENTILE_CONT (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 einen interpolierten Näherungswert aus dem Satz von Werten in einer Gruppe auf Grundlage des Quantilwerts 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. Der von dieser Funktion zurückgegebene Quantilwert basiert auf einer kontinuierlichen Verteilung der Spaltenwerte, und das Ergebnis würde interpoliert. Aus diesem Grund ist die Ausgabe möglicherweise nicht einer der Werte im Dataset. Eine der gängigen Anwendungsfälle für diese Funktion besteht darin, Datenausreißer zu vermeiden. Diese Funktion kann als Alternative zu PERCENTILE_CONT 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_CONT (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.
order_by_expression
Gibt eine Liste von numerischen Werten für die Sortierung und Berechnung des Quantils an. Es ist nur ein order_by_expression-Element zulässig. Die Standardsortierreihenfolge ist aufsteigend (ASC). Der Ausdruck muss einen exakten oder ungefähren numerischen Typ ergeben. Andere Datentypen sind nicht zulässig. Die exakten numerischen Typen sind int, bigint, smallint, tinyint, numeric, bit, decimal, smallmoney und money. Die ungefähren numerischen Typen sind float und real.
Rückgabetypen
float(53)
Hinweise
Alle NULL-Werte im Dataset werden ignoriert.
Quantil-Näherungsfunktionen verwenden KLL Sketch. Die Skizze (Sketch) wird erstellt, indem der Datenstrom gelesen wird. Aufgrund des verwendeten Algorithmus erfordert diese Funktion weniger Arbeitsspeicher als ihr nicht angenähertes Gegenstück (PERCENTILE_CONT).
Diese Funktion stellt rangbasierte Fehlergarantien bereit, keine wertebasierten. Die Funktionsimplementierung garantiert eine Fehlerquote von bis zu 1,33 %.
Bekannte Verhaltensweisen
- Die Ausgabe der Funktion 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 eine 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_CONT(0.10) WITHIN GROUP(ORDER BY Salary) AS 'P10',
APPROX_PERCENTILE_CONT(0.90) WITHIN GROUP(ORDER BY Salary) AS 'P90'
FROM tblEmployee
GROUP BY DeptId;