APPROX_PERCENTILE_DISC (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 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