PERCENT_RANK (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsSQL Analytics-Endpunkt in Microsoft FabricWarehouse 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 )

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

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

Dieser Artikel erfordert die AdventureWorks2022-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 ist das Resultset.

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