値のグループ内でのランクの値を計算します。同位の場合、RANK 関数はランキングシーケンス内にギャップを残します。
RANK( ) OVER ( window-spec )
window-spec : 以下の備考の説明を参照してください。
INTEGER
window-spec の要素は、関数構文の中 (インライン) に指定するか、または SELECT 文の WINDOW 句と組み合わせて指定できます。Window 関数として使用する場合、ORDER BY 句を指定する必要があります。また PARTITION BY 句を指定できますが、ROWS 句または RANGE 句は指定できません。WINDOW 句の window-spec 定義を参照してください。WINDOW 句を参照してください。
SELECT 文での Window 関数の使用方法や実例については、Window 関数を参照してください。
OVER 句でのウィンドウ指定の詳細については、ウィンドウ定義:OVER 句と WINDOW 句を使用したインライン定義を参照してください。
SQL/2008 RANK 関数は、オプションの SQL/2008 言語機能 T612、「Advanced OLAP operations」の一部です。
次の例は、ユタとニューヨークの従業員の給与を降順にランキングします。7 番目と 8 番目の従業員は給与が同一であるため、どちらも 7 位にランキングされることに注意してください。これに続く従業員は 9 位にランキングされ、ランキングシーケンスにギャップが残されます (8 位のランキングはありません)。
SELECT Surname, Salary, State, RANK() OVER (ORDER BY Salary DESC) "Rank" FROM Employees WHERE State IN ('NY','UT'); |
Surname | Salary | State | Rank |
---|---|---|---|
Shishov | 72995.000 | UT | 1 |
Wang | 68400.000 | UT | 2 |
Cobb | 62000.000 | UT | 3 |
Morris | 61300.000 | UT | 4 |
Davidson | 57090.000 | NY | 5 |
Martel | 55700.000 | NY | 6 |
Blaikie | 54900.000 | NY | 7 |
Diaz | 54900.000 | NY | 7 |
Driscoll | 48023.690 | UT | 9 |
Hildebrand | 45829.000 | UT | 10 |
Whitney | 45700.000 | NY | 11 |
... | ... | ... | ... |
Lynch | 24903.000 | UT | 19 |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |