PERCENT_RANK (Transact-SQL)
S’applique à : SQL Server base de données Azure SQL Azure SQL Managed Instance Azure Synapse Analytics Point de terminaison analytique SQL dans Microsoft Fabric Entrepôt dans Microsoft Fabric
Calcule le rang relatif d'une ligne dans un groupe de lignes dans SQL Server. Permet PERCENT_RANK
d’évaluer la position relative d’une valeur dans un jeu de résultats de requête ou une partition. PERCENT_RANK
est similaire à la fonction CUME_DIST .
Syntaxe
PERCENT_RANK( )
OVER ( [ partition_by_clause ] order_by_clause )
Arguments
OVER ( [ partition_by_clause ] order_by_clause )
Le premier paramètre, partition_by_clause, divise le jeu de résultats produit par la FROM
clause en partitions auxquelles la fonction est appliquée. S'il n'est pas spécifié, la fonction gère toutes les lignes du jeu de résultats de la requête en un seul groupe. Le deuxième paramètre, order_by_clause, détermine l’ordre logique dans lequel l’opération est effectuée. order_by_clause est requis. OVER
La <rows or range clause>
syntaxe ne peut pas être spécifiée dans une PERCENT_RANK
fonction. Pour plus d’informations, consultez SELECT - Clause OVER.
Types de retour
float(53)
Notes
La plage de valeurs retournées par PERCENT_RANK
est supérieure 0
et inférieure ou égale à 1
. La première ligne d’un jeu a un PERCENT_RANK
.0
NULL
les valeurs sont incluses par défaut et sont traitées comme les valeurs possibles les plus basses.
PERCENT_RANK
n’est pas déterministe. Pour plus d’informations, consultez Fonctions déterministes et non déterministes.
Exemples
Les exemples de code Transact-SQL de cet article sont fondés sur l’échantillon de base de données AdventureWorks2022
ou AdventureWorksDW2022
fourni, que vous pouvez télécharger à partir de la page d’accueil Échantillons et projets communautaires Microsoft SQL Server.
L’exemple suivant utilise la CUME_DIST
fonction pour calculer le centile de salaire pour chaque employé au sein d’un service donné. La valeur retournée par la CUME_DIST
fonction représente le pourcentage d’employés qui ont un salaire inférieur ou égal à l’employé actuel du même service. La PERCENT_RANK
fonction calcule le rang du salaire de l’employé au sein d’un service sous la forme d’un pourcentage. La PARTITION BY
clause est spécifiée pour partitionner les lignes dans le jeu de résultats par service. La ORDER BY
clause de la OVER
clause trie les lignes de chaque partition. La ORDER BY
clause de l’instruction SELECT
trie les lignes dans l’ensemble du jeu de résultats.
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;
Voici le jeu de résultats.
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