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 Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
Azure Synapse Analytics
SQL-Analyseendpunkt in Microsoft Fabric
Lagerhaus in Microsoft Fabric
SQL-Datenbank in Microsoft Fabric
Die PERCENTILE_DISC Funktion berechnet einen bestimmten Perzentil für sortierte Werte in einem gesamten Zeilensatz oder innerhalb der unterschiedlichen Partitionen eines Zeilensatzes. Bei einem bestimmten Quantilwert PPERCENTILE_DISC werden die Ausdruckswerte in der ORDER BY Klausel sortiert. Anschließend wird der Wert mit dem kleinsten CUME_DIST angegebenen Wert (in Bezug auf dieselbe Sortierspezifikation) zurückgegeben, der größer oder gleich P ist. Berechnet z. B PERCENTILE_DISC (0.5) . das 50. Quantil (d. h. den Median) eines Ausdrucks.
PERCENTILE_DISC berechnet das Quantil basierend auf einer diskreten Verteilung der Spaltenwerte. Das Ergebnis entspricht einem bestimmten Wert in der Spalte.
Transact-SQL-Syntaxkonventionen
Syntax
Syntax der Aggregationsfunktion:
PERCENTILE_DISC ( numeric_literal )
WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ]
[ OVER ( [ <partition_by_clause> ] ) ]
)
Analysefunktionssyntax:
PERCENTILE_DISC ( numeric_literal ) WITHIN GROUP ( ORDER BY order_by_expression [ ASC | DESC ] )
OVER ( [ <partition_by_clause> ] )
Argumente
literal
Das zu berechnende Quantil. Der Wert muss zwischen 0,0 und 1,0 liegen.
INNERHALB DER GRUPPE ( BESTELLUNG NACH order_by_expression [ ASC | DESC ] )
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. Standardmäßig wird die Sortierung in aufsteigender Reihenfolge vorgenommen. Die Liste der Werte kann von einem beliebigen Datentyp sein, der für den Sortierungsvorgang gültig sein kann.
ÜBER ( <partition_by_clause> )
Dividiert das Resultset der FROM Klausel in Partitionen. Die Quantilfunktion wird auf diese Partitionen angewendet. Weitere Informationen finden Sie unter SELECT - OVER-Klausel. Die <ORDER BY-Klausel> und <Zeilen oder Bereichsklausel>können in einer PERCENTILE_DISC Funktion nicht angegeben werden.
Note
Die Klausel OVER ist in Fabric Data Warehouse und im SQL-Analytics-Endpunkt optional.
PERCENTILE_DISC kann entweder in aggregierter oder analytischer (Fenster-)Form verwendet werden.
Rückgabetypen
Der Rückgabetyp wird durch den order_by_expression-Typ bestimmt.
Kompatibilitätsunterstützung
Unter Kompatibilitätsebene 110 und höher WITHIN GROUP ist ein reserviertes Schlüsselwort. Weitere Informationen finden Sie unter ALTER DATABASE Kompatibilitätsstufe.
Bemerkungen
Alle NULL-Werte im Dataset werden ignoriert.
PERCENTILE_DISC ist nicht deterministisch. Weitere Informationen finden Sie unter Deterministische und nichtdeterministische Funktionen.
Die aggregierte Form von PERCENTILE_DISC, die die Klausel OVER weglässt, wird in SQL Server, Azure SQL-Datenbank, Azure SQL Managed Instance oder SQL-Datenbank in Fabric nicht unterstützt.
Beispiele
Einfaches Syntaxbeispiel
Im folgenden Beispiel wird das Mediangehalt der einzelnen Abteilungen verwendet PERCENTILE_CONT und PERCENTILE_DISC gesucht. Möglicherweise geben sie nicht denselben Wert zurück:
-
PERCENTILE_CONTgibt den entsprechenden Wert zurück, auch wenn er nicht im Dataset vorhanden ist. -
PERCENTILE_DISCgibt einen tatsächlichen Satzwert zurück.
USE AdventureWorks2022;
SELECT DISTINCT Name AS DepartmentName,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY ph.Rate) OVER (PARTITION BY Name) AS MedianCont,
PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY ph.Rate) OVER (PARTITION BY Name) AS MedianDisc
FROM HumanResources.Department AS d
INNER JOIN HumanResources.EmployeeDepartmentHistory AS dh
ON dh.DepartmentID = d.DepartmentID
INNER JOIN HumanResources.EmployeePayHistory AS ph
ON ph.BusinessEntityID = dh.BusinessEntityID
WHERE dh.EndDate IS NULL;
Hier ist ein partielles Resultset.
DepartmentName MedianCont MedianDisc
Document Control 16.8269 16.8269
Engineering 34.375 32.6923
Executive 54.32695 48.5577
Human Resources 17.427850 16.5865
Beispiele: Azure Synapse Analytics
Einfaches Syntaxbeispiel
Im folgenden Beispiel wird das Mediangehalt der einzelnen Abteilungen verwendet PERCENTILE_CONT und PERCENTILE_DISC gesucht. Möglicherweise geben sie nicht denselben Wert zurück:
-
PERCENTILE_CONTgibt den entsprechenden Wert zurück, auch wenn er nicht im Dataset vorhanden ist. -
PERCENTILE_DISCgibt einen tatsächlichen Satzwert zurück.
-- Uses AdventureWorks
SELECT DISTINCT DepartmentName,
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY BaseRate) OVER (PARTITION BY DepartmentName) AS MedianCont,
PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY BaseRate) OVER (PARTITION BY DepartmentName) AS MedianDisc
FROM dbo.DimEmployee;
Hier ist ein partielles Resultset.
DepartmentName MedianCont MedianDisc
-------------------- ---------- ----------
Document Control 16.826900 16.8269
Engineering 34.375000 32.6923
Human Resources 17.427850 16.5865
Shipping and Receiving 9.250000 9.0000