Fonctions de classement (Transact-SQL)
Les fonctions de classement renvoient une valeur de classement pour chaque ligne d'une partition. Selon la fonction utilisée, certaines lignes peuvent recevoir la même valeur que d'autres lignes. Les fonctions de classement sont non déterministes.
Transact-SQL offre les fonctions de classement suivantes :
Exemples
Dans l'exemple suivant, les quatre fonctions de classement sont utilisées dans la même requête. Reportez-vous aux rubriques consacrées à chacune d'entre elles pour consulter des exemples plus spécifiques.
USE AdventureWorks;
GO
SELECT c.FirstName, c.LastName
,ROW_NUMBER() OVER (ORDER BY a.PostalCode) AS 'Row Number'
,RANK() OVER (ORDER BY a.PostalCode) AS 'Rank'
,DENSE_RANK() OVER (ORDER BY a.PostalCode) AS 'Dense Rank'
,NTILE(4) OVER (ORDER BY a.PostalCode) AS 'Quartile'
,s.SalesYTD, a.PostalCode
FROM Sales.SalesPerson s
INNER JOIN Person.Contact c
ON s.SalesPersonID = c.ContactID
INNER JOIN Person.Address a
ON a.AddressID = c.ContactID
WHERE TerritoryID IS NOT NULL
AND SalesYTD <> 0;
Voici l'ensemble des résultats.
FirstName |
LastName |
Row Number |
Rank |
Dense Rank |
Quartile |
SalesYTD |
PostalCode |
---|---|---|---|---|---|---|---|
Maciej |
Dusza |
1 |
1 |
1 |
1 |
4557045 |
98027 |
Shelley |
Dyck |
2 |
1 |
1 |
1 |
5200475 |
98027 |
Linda |
Ecoffey |
3 |
1 |
1 |
1 |
3857164 |
98027 |
Carla |
Eldridge |
4 |
1 |
1 |
1 |
1764939 |
98027 |
Carol |
Elliott |
5 |
1 |
1 |
2 |
2811013 |
98027 |
Jauna |
Elson |
6 |
6 |
2 |
2 |
3018725 |
98055 |
Michael |
Emanuel |
7 |
6 |
2 |
2 |
3189356 |
98055 |
Terry |
Eminhizer |
8 |
6 |
2 |
3 |
3587378 |
98055 |
Gail |
Erickson |
9 |
6 |
2 |
3 |
5015682 |
98055 |
Mark |
Erickson |
10 |
6 |
2 |
3 |
3827950 |
98055 |
Martha |
Espinoza |
11 |
6 |
2 |
4 |
1931620 |
98055 |
Janeth |
Esteves |
12 |
6 |
2 |
4 |
2241204 |
98055 |
Twanna |
Evans |
13 |
6 |
2 |
4 |
1758386 |
98055 |