ROW_NUMBER (日本語)
構文
の説明イラストrow_number.gif
関連項目:
構文、セマンティクス、および制限については、「分析関数」
目的
ROW_NUMBER
は分析関数です。 order_by_clause
で指定された順序付けられた行の順序で、適用される各行(パーティション内の各行、またはクエリによって返される各行)に一意の番号を割り当てます。 、1から始まります。
ROW_NUMBER
の値を取得するクエリ内でROW_NUMBER
を使用してサブクエリをネストする指定された範囲では、内部クエリの結果から行の正確なサブセットを見つけることができます。この関数の使用により、top-N、bottom-N、およびinner-Nレポートを実装できます。一貫した結果を得るには、クエリで確定的な並べ替え順序を確保する必要があります。
ROW_NUMBER
やその他の分析関数をexpr
。つまり、分析関数をネストすることはできませんが、expr
には他の組み込み関数式を使用できます。 expr
の有効な形式については、「SQL式について」を参照してください。
例
サンプルテーブルの各部門についてoe.employees
の場合、次の例では、従業員の雇用日順に各行に番号を割り当てます。
ROW_NUMBER
は非決定論的関数。ただし、employee_id
は一意のキーであるため、この関数のアプリケーションの結果は決定論的です。
関連項目:
非決定論的動作の例についてはFIRST_VALUEとLAST_VALUE
次のinner-Nクエリは、employees
テーブルからすべての行を選択しますが、51から1までのみを返します- 100行目:
SELECT last_name FROM (SELECT last_name, ROW_NUMBER() OVER (ORDER BY last_name) R FROM employees) WHERE R BETWEEN 51 and 100;