CUME_DIST (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics SQL Analytics-Endpunkt in Microsoft Fabric Warehouse in Microsoft Fabric
Für SQL Server berechnet diese Funktion die kumulierte Verteilung eines Werts innerhalb einer Gruppe von Werten. Das heißt, CUME_DIST
berechnet die relative Position eines angegebenen Werts in einer Gruppe von Werten. Ausgehend von aufsteigender Sortierreihenfolge ist der CUME_DIST
-Wert eines Werts in Zeile r definiert als die Anzahl der Zeilen mit Werten kleiner oder gleich dem Wert in Zeile r, geteilt durch die Anzahl der ausgewerteten Zeilen in der Partition oder dem Resultset der Abfrage. CUME_DIST
ähnelt der PERCENT_RANK
-Funktion.
Transact-SQL-Syntaxkonventionen
Syntax
CUME_DIST( )
OVER ( [ partition_by_clause ] order_by_clause )
Argumente
OVER ( [ partition_by_clause ] order_by_clause)
Das Argument partition_by_clause unterteilt das Resultset der FROM-Klausel in Partitionen, auf die die Funktion angewendet wird. Wenn das Argument partition_by_clause nicht angegeben wird, behandelt CUME_DIST
alle Zeilen von Resultsets von Abfragen als eine einzelne Gruppe. order_by_clause bestimmt die logische Reihenfolge, in der der Vorgang ausgeführt wird. Für CUME_DIST
ist order_by_clause erforderlich. CUME_DIST
akzeptiert die <ROW or RANGE-Klausel> der OVER-Syntax nicht. Weitere Informationen finden Sie unter OVER-Klausel (Transact-SQL).
Rückgabetypen
float(53)
Bemerkungen
CUME_DIST
gibt einen Bereich von Werten größer als 0 und kleiner als oder gleich 1 zurück. Gleichwertige Werte ergeben immer den gleichen kumulierten Verteilungswert. CUME_DIST
schließt standardmäßig NULL-Werte ein und behandelt diese Werte als die niedrigsten möglichen Werte.
CUME_DIST
ist nicht deterministisch. Weitere Informationen finden Sie unter Deterministic and Nondeterministic Functions.
Beispiele
Das folgende Beispiel verwendet die CUME_DIST
-Funktion, um das Gehaltsquantil für jeden Mitarbeiter innerhalb einer angegebenen Abteilung zu berechnen. Die CUME_DIST
-Funktion gibt einen Wert zurück, der den Prozentsatz der Mitarbeiter darstellt, deren Gehalt kleiner oder gleich dem des aktuellen Mitarbeiters in der gleichen Abteilung ist. Die PERCENT_RANK
-Funktion berechnet den prozentualen Rang des Gehalts des Mitarbeiters innerhalb einer Abteilung. Um die Zeilen im Resultset nach Abteilung zu partitionieren, gibt das Beispiel den partition_by_clause-Wert an. Die ORDER BY-Klausel der OVER-Klausel sortiert die Zeilen in jeder Partition logisch. Die ORDER BY-Klausel der SELECT-Anweisung bestimmt die Anzeigereihenfolge des Resultsets.
USE AdventureWorks2022;
GO
SELECT Department, LastName, Rate,
CUME_DIST () OVER (PARTITION BY Department ORDER BY Rate) AS CumeDist,
PERCENT_RANK() OVER (PARTITION BY Department ORDER BY Rate ) AS PctRank
FROM HumanResources.vEmployeeDepartmentHistory AS edh
INNER JOIN HumanResources.EmployeePayHistory AS e
ON e.BusinessEntityID = edh.BusinessEntityID
WHERE Department IN (N'Information Services',N'Document Control')
ORDER BY Department, Rate DESC;
Hier sehen Sie das Ergebnis.
Department LastName Rate CumeDist PctRank
---------------------- ---------------------- --------------------- ---------------------- ----------------------
Document Control Arifin 17.7885 1 1
Document Control Norred 16.8269 0.8 0.5
Document Control Kharatishvili 16.8269 0.8 0.5
Document Control Chai 10.25 0.4 0
Document Control Berge 10.25 0.4 0
Information Services Trenary 50.4808 1 1
Information Services Conroy 39.6635 0.9 0.888888888888889
Information Services Ajenstat 38.4615 0.8 0.666666666666667
Information Services Wilson 38.4615 0.8 0.666666666666667
Information Services Sharma 32.4519 0.6 0.444444444444444
Information Services Connelly 32.4519 0.6 0.444444444444444
Information Services Berg 27.4038 0.4 0
Information Services Meyyappan 27.4038 0.4 0
Information Services Bacon 27.4038 0.4 0
Information Services Bueno 27.4038 0.4 0
(15 row(s) affected)