Anmerkung
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen, dich anzumelden oder die Verzeichnisse zu wechseln.
Der Zugriff auf diese Seite erfordert eine Genehmigung. Du kannst versuchen , die Verzeichnisse zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-Analyseendpunkt in Microsoft Fabric
Lagerhaus in Microsoft Fabric
SQL-Datenbank in Microsoft Fabric
Berechnet für sortierte Werte in einem gesamten Rowset oder innerhalb bestimmter Partitionen eines Rowsets in SQL Server ein bestimmtes Quantil. 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
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.
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 Compatibility Level.
Bemerkungen
Alle NULL-Werte im Dataset werden ignoriert.
PERCENTILE_DISC ist nicht deterministisch. Weitere Informationen finden Sie unter Deterministische und nichtdeterministische Funktionen.
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 und Analytics-Plattformsystem (PDW)
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