NTH_VALUE
構文
関連項目:
analytic_clause
の構文、セマンティクスおよび制限事項の詳細は、「分析ファンクション」を参照してください。
目的
NTH_VALUE
は、analytic_clause
に定義したウィンドウ内でn番目の行のmeasure_expr
値を戻します。戻り値のデータ型はmeasure_expr
です。
-
{
RESPECT
|IGNORE
}NULLS
は、measure_expr
のNULL値を計算に含めるか除外するかを指定します。デフォルトはRESPECT
NULLS
です。 -
n
は、n番目の行についてメジャー値を戻すことを示します。n
に指定できるのは、定数、バインド変数、列、またはこれらを含む式です。ただし、式の場合は正の整数に解決される必要があります。データソース・ウィンドウに含まれる行がn
より少ない場合は、NULL
が戻されます。n
がNULLの場合は、エラーが戻されます。 -
FROM
{FIRST
|LAST
}では、計算をウィンドウ内の最初の行から開始するか、または最後の行から開始するかを指定します。デフォルトはFROM
FIRST
です。
analytic_clause
のwindowing_clause
を省略した場合、デフォルトでRANGE
BETWEEN
UNBOUNDED
PRECEDING
AND
CURRENT
ROW
になります。このデフォルトは、NTH_VALUE
... FROM
LAST
... に対して予期しない値を返すことがあります。これは、ウィンドウの最後の値は、ウィンドウの終端になり、その終端が固定されていないためです。これは、現行の行が変化するに伴って変化します。正しい結果を得るには、windowing_clause
をRANGE
BETWEEN
UNBOUNDED
PRECEDING
AND
UNBOUNDED
FOLLOWING
として指定します。または、windowing_clause
をRANGE
BETWEEN
CURRENT
ROW
AND
UNBOUNDED
FOLLOWING
として指定することもできます。
関連項目:
-
このファンクションの使用の詳細は、『Oracle Databaseデータ・ウェアハウス・ガイド』を参照してください。
-
NTH_VALUE
の戻り値が文字値である場合に、それに割り当てる照合を定義する照合導出ルールは、『Oracle Databaseグローバリゼーション・サポート・ガイド』の付録Cを参照してください。
例
次の例では、2番目のchannel_id
に対するamount_sold
の最小値を、prod_id
13から16についてそれぞれ昇順で示します。
SELECT prod_id, channel_id, MIN(amount_sold), NTH_VALUE(MIN(amount_sold), 2) OVER (PARTITION BY prod_id ORDER BY channel_id ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) nv FROM sales WHERE prod_id BETWEEN 13 and 16 GROUP BY prod_id, channel_id; PROD_ID CHANNEL_ID MIN(AMOUNT_SOLD) NV ---------- ---------- ---------------- ---------- 13 2 907.34 906.2 13 3 906.2 906.2 13 4 842.21 906.2 14 2 1015.94 1036.72 14 3 1036.72 1036.72 14 4 935.79 1036.72 15 2 871.19 871.19 15 3 871.19 871.19 15 4 871.19 871.19 16 2 266.84 266.84 16 3 266.84 266.84 16 4 266.84 266.84 16 9 11.99 266.84 13 rows selected.