

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# ROW\$1NUMBER ウィンドウ関数
<a name="r_WF_ROW_NUMBER"></a>

OVER 句の ORDER BY 式に基づいて、行グループ内の現在の行の (1 からカウントした) 序数を割り当てます。オプションの PARTITION BY 句がある場合、序数は行グループごとにリセットされます。ORDER BY 式で同じ値を持つ行には、確定的でない方法で異なる行番号が割り当てられます。

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

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

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

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

OVER   
ROW\$1NUMBER 関数のウィンドウ関数句。

PARTITION BY *expr\$1list*   
オプション。結果を行のセットに分割する 1 つ以上の列式。

ORDER BY *order\$1list*   
オプション。セット内の行の順序を定義する 1 つ以上の列式。PARTITION BY が指定されていない場合、ORDER BY はテーブル全体を使用します。  
ORDER BY で一意の順序付けが行われない、または省略した場合、行の順序は不確定になります。詳細については、「[ウィンドウ関数用データの一意の並び順](c_Window_functions.md#r_Examples_order_by_WF)」を参照してください。

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

BIGINT

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

以下の例では `WINSALES` テーブルを使用します。`WINSALES` テーブルの説明については、「[ウィンドウ関数例のサンプルテーブル](c_Window_functions.md#r_Window_function_example)」を参照してください。

次の例では、QTY によってテーブルを (昇順で) 順序付け、各行に行番号を割り当てます。結果はウィンドウ関数の結果が提供された後にソートされます。

```
SELECT salesid, sellerid, qty, 
ROW_NUMBER() OVER(
   ORDER BY qty ASC) AS row
FROM winsales
ORDER BY 4,1;

salesid   sellerid   qty   row
---------+----------+-----+-----
   30001 |        3 |  10 |   1	
   10001 |        1 |  10 |   2	
   10006 |        1 |  10 |   3
   40005 |        4 |  10 |   4
   30003 |        3 |  15 |   5
   20001 |        2 |  20 |   6
   20002 |        2 |  20 |   7
   30004 |        3 |  20 |   8
   10005 |        1 |  30 |   9
   30007 |        3 |  30 |  10
   40001 |        4 |  40 |  11
```

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

```
SELECT salesid, sellerid, qty, 
ROW_NUMBER() OVER(
  PARTITION BY sellerid
  ORDER BY qty ASC) AS row_by_seller
FROM winsales
ORDER BY 2,4;

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

次の例は、オプション句を使用しない場合の結果を示しています。

```
SELECT salesid, sellerid, qty, ROW_NUMBER() OVER() AS row
FROM winsales
ORDER BY 4,1;

salesid   sellerid   qty   row
---------+----------+-----+-----
   30001 |        3 |  10 |   1	
   10001 |        1 |  10 |   2	
   10005 |        1 |  30 |   3
   40001 |        4 |  40 |   4
   10006 |        1 |  10 |   5
   20001 |        2 |  20 |   6
   40005 |        4 |  10 |   7
   20002 |        2 |  20 |   8
   30003 |        3 |  15 |   9
   30004 |        3 |  20 |  10
   30007 |        3 |  30 |  11
```