プライマリ・コンテンツに移動
Oracle® Database SQL言語リファレンス
11gリリース2 (11.2)
B56299-08
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

RANK

集計の構文

rank_aggregate::=

rank_aggregate.gifの説明が続きます。
図「rank_aggregate.gif」の説明

分析の構文

rank_analytic::=

rank_analytic.gifの説明が続きます。
図「rank_analytic.gif」の説明


関連項目:

構文、セマンティクスおよび制限事項の詳細は、「分析ファンクション」を参照してください。

用途

RANKは、一連の値における値のランクを計算します。戻り型は、NUMBERです。


関連項目:

暗黙的な変換の詳細は、表3-10「暗黙的な型変換のマトリックス」を参照してください。数値の優先順位の詳細は、「数値の優先順位」を参照してください。

ランク付け基準と同じ値を持つ行は、同じランクになります。Oracle Databaseは連結行の数を連結ランクに追加して、次のランクを計算します。そのため、ランクは連続した数値でない場合があります。このファンクションは、上位N番および下位N番のレポートに有効です。

集計の例

次の例では、サンプル表hr.employeesから、給与が$15,500であり、歩合が5%である不確定な従業員のランクを計算します。

SELECT RANK(15500, .05) WITHIN GROUP
   (ORDER BY salary, commission_pct) "Rank"
   FROM employees;

      Rank
----------
       105

同様に、次の問合せは、従業員の給与から給与が$15,500のランクを戻します。

SELECT RANK(15500) WITHIN GROUP 
   (ORDER BY salary DESC) "Rank of 15500" 
   FROM employees;

Rank of 15500
--------------
             4

分析の例

次の文は、サンプル・スキーマhrの部門60の従業員を、その給与に基づいてランク付けします。給与が同じ場合は同じランクになるため、連続しないランクになります。この例と、「DENSE_RANK」の分析の例を比較してください。

SELECT department_id, last_name, salary,
       RANK() OVER (PARTITION BY department_id ORDER BY salary) RANK
  FROM employees WHERE department_id = 60
  ORDER BY RANK, last_name;

DEPARTMENT_ID LAST_NAME                     SALARY       RANK
------------- ------------------------- ---------- ----------
           60 Lorentz                         4200          1
           60 Austin                          4800          2
           60 Pataballa                       4800          2
           60 Ernst                           6000          4
           60 Hunold                          9000          5