- カテゴリ:
- ウィンドウ関数の構文と使用法 (ランキング) 
ROW_NUMBER¶
ウィンドウパーティション内の各行に一意の行番号を返します。
行番号は1から始まり、連続して続きます。
構文¶
ROW_NUMBER() OVER (
  [ PARTITION BY <expr1> [, <expr2> ... ] ]
  ORDER BY <expr3> [ , <expr4> ... ] [ { ASC | DESC } ]
  )
引数¶
なし。
使用上の注意¶
- expr1および- expr2は、パーティション化する列または式を指定します。0、1、またはそれ以上の式でパーティションを分割できます。- たとえば、複数の州(または県)にわたってデータを選択しており、各州内で1からNまでの行番号が必要であるとします。その場合、状態ごとに分割できます。 - 単一のグループのみが必要な場合は、 PARTITION BY 句を省略します。 
- expr3および- expr4は、行の順序を決定するために使用する列または式を指定します。1個以上の式で指定できます。- 例えば、トウモロコシの生産順に農家をリストしたい場合は、 - bushels_produced列を使用します。詳細については、 例 (このトピック)をご参照ください。
例¶
以下のクエリは、パーティション内で行番号を割り当てる方法を示しています。この場合、パーティションは証券取引所です(例えば、「N」は「NASDAQ」です)。
SELECT
    symbol,
    exchange,
    shares,
    ROW_NUMBER() OVER (PARTITION BY exchange ORDER BY shares) AS row_number
  FROM trades;
+------+--------+------+----------+
|SYMBOL|EXCHANGE|SHARES|ROW_NUMBER|
+------+--------+------+----------+
|SPY   |C       |   250|         1|
|AAPL  |C       |   250|         2|
|AAPL  |C       |   300|         3|
|SPY   |N       |   100|         1|
|AAPL  |N       |   300|         2|
|SPY   |N       |   500|         3|
|QQQ   |N       |   800|         4|
|QQQ   |N       |  2000|         5|
|YHOO  |N       |  5000|         6|
+------+--------+------+----------+