APPROX_PERCENTILE_CONT (Transact-SQL)

Gilt für:SQL Server 2022 (16.x) Azure SQL-DatenbankAzure SQL Managed InstanceSQL Analytics-Endpunkt in Microsoft FabricWarehouse 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;