パーティションの各行の順位値を返します。使用する関数によっては、いくつかの行で、他の行と同じ値を受け取る場合があります。順位付け関数は非決定的です。
Transact-SQL には、次の順位付け関数があります。
以下の例では、同じクエリ内で 4 つの順位付け関数を使用します。各順位付け関数をそれぞれの例で確認してください。
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;
以下に結果セットを示します。
|
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
|
関連項目
関数 (Transact-SQL)
OVER 句 (Transact-SQL)
ヘルプおよび情報
SQL Server 2008 の参考資料の入手