

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# RANK ウィンドウ関数
<a name="WF_RANK"></a>

 RANK ウィンドウ関数は、OVER 句の ORDER BY 式に基づいて、値のグループの値のランクを決定します。オプションの PARTITION BY 句がある場合、ランク付けは行のグループごとにリセットされます。ランク付け条件の値が等しい行は同じランクを受け取ります。 は、結合された行の数を結合されたランクAWS Clean Roomsに追加して次のランクを計算するため、ランクは連続した数値ではない可能性があります。例えば、2 行が 1 位にランク付けされると、次のランクは 3 位になります。

 RANK と [DENSE\$1RANK ウィンドウ関数](WF_DENSE_RANK.md) では異なる点があり、DENSE\$1RANK では、2 行以上で同点となった場合、ランク付けされた値の順位に差はありません。例えば、2 行が 1 位にランク付けされると、次のランクは 2 位になります。

同じクエリに PARTITION BY および ORDER BY 句のあるランク付け関数を使用することができます。

## 構文
<a name="WF_RANK-synopsis"></a>

```
RANK () OVER
(
[ PARTITION BY expr_list ]
[ ORDER BY order_list ]
)
```

## 引数
<a name="WF_RANK-arguments"></a>

( )   
この関数は引数を受け取りませんが、空のかっこは必要です。

OVER   
RANK 関数のウィンドウ句。

PARTITION BY *expr\$1list*   
省略可能。ウィンドウを定義する 1 つ以上の式。

ORDER BY *order\$1list*   
省略可能。ランク付けの値が基とする列を定義します。PARTITION BY が指定されていない場合、ORDER BY はテーブル全体を使用します。ORDER BY を省略した場合、すべての行について戻り値は 1 です。  
ORDER BY で一意のソートが行われない場合、行の順序は不確定になります。詳細については、「[ウィンドウ関数用データの一意の並び順](Window_functions.md#Examples_order_by_WF)」を参照してください。

## 戻り型
<a name="Supported_data_types_wf_rank"></a>

INTEGER

## 例
<a name="WF_RANK-examples"></a>

次の例では、販売数量でテーブルで順序付けして (デフォルトは昇順)、行ごとにランクを割り当てます。1 のランク値は、もっとも高いランクの値です。結果はウィンドウ関数の結果が提供された後にソートされます。

```
select salesid, qty,
rank() over (order by qty) as rnk
from winsales
order by 2,1;

salesid | qty | rnk
--------+-----+-----
10001 |  10 |  1
10006 |  10 |  1
30001 |  10 |  1
40005 |  10 |  1
30003 |  15 |  5
20001 |  20 |  6
20002 |  20 |  6
30004 |  20 |  6
10005 |  30 |  9
30007 |  30 |  9
40001 |  40 |  11
(11 rows)
```

この例の外部 ORDER BY 句には、このクエリが実行されるたびに が一貫してソートされた結果をAWS Clean Rooms返すように、列 2 と 1 が含まれていることに注意してください。例えば、販売 ID 10001 および 10006 の行は、QTY と RNK の値が同じです。列 1 によって最終的な結果セットを順序付けると、行 10001 は常に 10006 の前になります。WINSALES テーブルの説明については、「[ウィンドウ関数例のサンプルテーブル](Window_functions.md#Window_function_example)」を参照してください。

次の例では、ウィンドウ関数 (`order by qty desc`) の順序付けは逆順になります。これで、最高ランク値が最大の QTY 値に適用されます。

```
select salesid, qty,
rank() over (order by qty desc) as rank
from winsales
order by 2,1;

 salesid | qty | rank
---------+-----+-----
   10001 |  10 |   8
   10006 |  10 |   8
   30001 |  10 |   8
   40005 |  10 |   8
   30003 |  15 |   7
   20001 |  20 |   4
   20002 |  20 |   4
   30004 |  20 |   4
   10005 |  30 |   2
   30007 |  30 |   2
   40001 |  40 |   1
(11 rows)
```

WINSALES テーブルの説明については、「[ウィンドウ関数例のサンプルテーブル](Window_functions.md#Window_function_example)」を参照してください。

次の例では、SELLERID によってテーブルをパーティション分割し、数量で各パーティションを順序付けして (降順)、行ごとにランクを割り当てます。結果はウィンドウ関数の結果が提供された後にソートされます。

```
select salesid, sellerid, qty, rank() over
(partition by sellerid
order by qty desc) as rank
from winsales
order by 2,3,1;

salesid | sellerid | qty | rank
--------+----------+-----+-----
  10001 |        1 |  10 |  2
  10006 |        1 |  10 |  2
  10005 |        1 |  30 |  1
  20001 |        2 |  20 |  1
  20002 |        2 |  20 |  1
  30001 |        3 |  10 |  4
  30003 |        3 |  15 |  3
  30004 |        3 |  20 |  2
  30007 |        3 |  30 |  1
  40005 |        4 |  10 |  2
  40001 |        4 |  40 |  1
(11 rows)
```