RANK (Transact-SQL)
Retourne le rang de chaque ligne au sein de la partition d'un ensemble de résultats. Le rang d'une ligne est un, plus le nombre de rangs précédant la ligne en question.
Conventions de syntaxe de Transact-SQL
Syntaxe
RANK ( ) OVER ( [ < partition_by_clause > ] < order_by_clause > )
Arguments
- < partition_by_clause >
Divise l'ensemble de résultats généré par la clause FROM en partitions auxquelles la fonction RANK est appliquée. Pour connaître la syntaxe de PARTITION BY, consultez Clause OVER (Transact-SQL).
- < order_by_clause >
Détermine l'ordre d'application des valeurs RANK aux lignes d'une partition. Pour plus d'informations, consultez Clause ORDER BY (Transact-SQL). Un entier ne peut pas représenter une colonne lorsque <order_by_clause> est utilisé dans une fonction de classement.
Notes
Si au moins deux lignes sont liées pour un rang, chacune d'entre elles reçoit le même rang. Par exemple, si les deux meilleurs vendeurs ont la même valeur SalesYTD, leur rang à tous deux est un. Le rang du vendeur qui suit dans la hiérarchie SalesYTD est trois, car il existe deux lignes au rang supérieur. Par conséquent, la fonction RANK ne retourne pas toujours des entiers consécutifs.
L'ordre de tri utilisé pour toute la requête détermine l'ordre d'apparition des lignes dans un ensemble de résultats.
Types de retour
bigint
Exemple
L'exemple suivant classe les produits d'inventaire en fonction de leurs quantités. L'ensemble de lignes est partitionné par LocationID
et trié par Quantity
. Notez que l'argument ORDER BY
de la clause OVER
détermine l'ordre des valeurs RANK
tandis que l'argument ORDER BY
de l'instruction SELECT
détermine l'ordre de l'ensemble de résultats.
USE AdventureWorks;
GO
SELECT i.ProductID, p.Name, i.LocationID, i.Quantity
,RANK() OVER
(PARTITION BY i.LocationID ORDER BY i.Quantity DESC) AS 'RANK'
FROM Production.ProductInventory i
INNER JOIN Production.Product p
ON i.ProductID = p.ProductID
ORDER BY p.Name;
GO
Voir aussi
Référence
DENSE_RANK (Transact-SQL)
ROW_NUMBER (Transact-SQL)
NTILE (Transact-SQL)
Fonctions de classement (Transact-SQL)
Fonctions (Transact-SQL)