NTH_VALUE
構文
関連項目:
analytic_clauseの構文、セマンティクスおよび制限事項の詳細は、「分析ファンクション」を参照してください。
目的
NTH_VALUEは、analytic_clauseに定義したウィンドウ内でn番目の行のmeasure_expr値を戻します。戻り値のデータ型はmeasure_exprです。
-
{
RESPECT|IGNORE}NULLSは、measure_exprのNULL値を計算に含めるか除外するかを指定します。デフォルトはRESPECTNULLSです。 -
nは、n番目の行についてメジャー値を戻すことを示します。nに指定できるのは、定数、バインド変数、列、またはこれらを含む式です。ただし、式の場合は正の整数に解決される必要があります。データソース・ウィンドウに含まれる行がnより少ない場合は、NULLが戻されます。nがNULLの場合は、エラーが戻されます。 -
FROM{FIRST|LAST}では、計算をウィンドウ内の最初の行から開始するか、または最後の行から開始するかを指定します。デフォルトはFROMFIRSTです。
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.