PERCENT_RANK (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
Berechnet den relativen Rang einer Zeile innerhalb einer Gruppe von Zeilen in SQL Server. Wird verwendet PERCENT_RANK
, um die relative Position eines Werts in einem Abfrageergebnissatz oder einer Partition auszuwerten. PERCENT_RANK
ähnelt der CUME_DIST-Funktion .
Syntax
PERCENT_RANK( )
OVER ( [ partition_by_clause ] order_by_clause )
Argumente
OVER ( [ partition_by_clause ] order_by_clause )
Der erste Parameter, partition_by_clause, dividiert das von der FROM
Klausel erzeugte Resultset in Partitionen, auf die die Funktion angewendet wird. Wird dies nicht angegeben, verarbeitet die Funktion alle Zeilen des Abfrageresultsets als einzelne Gruppe. Der zweite Parameter , order_by_clause, bestimmt die logische Reihenfolge, in der der Vorgang ausgeführt wird. order_by_clause ist erforderlich. OVER
Die <rows or range clause>
Syntax kann in einer PERCENT_RANK
Funktion nicht angegeben werden. Weitere Informationen finden Sie unter SELECT - OVER-Klausel.
Rückgabetypen
float(53)
Hinweise
Der Bereich der zurückgegebenen PERCENT_RANK
Werte ist größer als 0
und kleiner als oder gleich 1
. Die erste Zeile in einem Satz hat eine PERCENT_RANK
von 0
. NULL
Werte sind standardmäßig enthalten und werden als die niedrigsten möglichen Werte behandelt.
PERCENT_RANK
ist nicht deterministisch. Weitere Informationen finden Sie unter Deterministische und nicht deterministische Funktionen.
Beispiele
Die Transact-SQL-Codebeispiele in diesem Artikel verwenden die AdventureWorks2022
- oder AdventureWorksDW2022
-Beispieldatenbank, die Sie von der Homepage Microsoft SQL Server Samples and Community Projects herunterladen können.
Im folgenden Beispiel wird die CUME_DIST
Funktion verwendet, um das Gehalts-Quantil für jeden Mitarbeiter innerhalb einer bestimmten Abteilung zu berechnen. Der von der CUME_DIST
Funktion zurückgegebene Wert stellt den Prozentsatz der Mitarbeiter dar, deren Gehalt kleiner oder gleich dem aktuellen Mitarbeiter in derselben Abteilung ist. Die PERCENT_RANK
Funktion berechnet den Rang des Gehalts des Mitarbeiters innerhalb einer Abteilung als Prozentsatz. Die PARTITION BY
Klausel wird angegeben, um die Zeilen im Resultset nach Abteilung zu partitionieren. Die ORDER BY
Klausel in der OVER
Klausel sortiert die Zeilen in jeder Partition. Die ORDER BY
Klausel in der SELECT
Anweisung sortiert die Zeilen im gesamten Resultset.
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