構文

用途
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データ・ウェアハウス・ガイド』を参照してください。 |
例
次の例では、2番目のchannel_idに対するamount_soldの最小値を、prod_id13から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.