Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - SQL リファレンス » SQL の使用 » SQL 関数 » SQL 関数 (A ~ D)

 

DENSE_RANK 関数 [ランキング]

パーティション内の値のランクを計算します。同順の値の場合、DENSE_RANK はランキング・シーケンス内にギャップを残しません。

構文
DENSE_RANK( ) OVER ( window-spec )
window-spec : 以下の備考を参照します。
戻り値

INTEGER

備考

window-spec の要素は、関数構文の中 (インライン) に指定するか、または SELECT 文の WINDOW 句と組み合わせて指定できます。Window 関数として使用する場合、ORDER BY 句を指定する必要があります。また PARTITION BY 句を指定できますが、ROWS 句または RANGE 句は指定できません。WINDOW 句window-spec 定義を参照してください。

SELECT 文での Window 関数の使用方法や実例については、Window 関数を参照してください。

参照
標準と互換性
  • SQL/2003   SQL/OLAP 機能 T612

次の例は、ユタとニューヨークの従業員の給与ランキングを示す結果セットを返します。結果セットには 19 レコードが返されますが、リスト内の 7 番目と 8 番目の従業員は同一給与で 7 位の同順であるため、18 のランキングのみリストされています。DENSE_RANK 関数はランクにギャップを残さないため、9 番目の従業員を '9' とランキングする代わりに、その従業員は '8' とリストされます。

SELECT DepartmentID, Surname, Salary, State,
DENSE_RANK() OVER (ORDER BY Salary DESC) AS SalaryRank
FROM Employees 
WHERE State IN ('NY','UT');

結果セットは次のとおりです。

DepartmentID Surname Salary State SalaryRank
100 Shishov 72995.000 UT 1
100 Wang 68400.000 UT 2
100 Cobb 62000.000 UT 3
400 Morris 61300.000 UT 4
300 Davidson 57090.000 NY 5
200 Martel 55700.000 NY 6
400 Blaikie 54900.000 NY 7
100 Diaz 54900.000 UT 7
100 Driscoll 48023.000 UT 8
400 Hildebrand 45829.000 UT 9
100 Whitney 45700.000 NY 10
100 Guevara 42998.000 NY 11
100 Soo 39075.000 NY 12
200 Goggin 37900.000 UT 13
400 Wetherby 35745.000 NY 14
400 Ahmed 34992.000 NY 15
500 Rebeiro 34576.000 UT 16
300 Bigelow 31200.000 UT 17
500 Lynch 24903.000 UT 18