プライマリ・コンテンツに移動
Oracle® Database SQL言語リファレンス
11gリリース2 (11.2)
B56299-08
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

NTH_VALUE

構文

nth_value.gifの説明が続きます。
図「nth_value.gif」の説明


関連項目:

analytic_clauseの構文、セマンティクスおよび制限事項の詳細は、「分析ファンクション」を参照してください。

用途

NTH_VALUEは、analytic_clauseに定義したウィンドウ内でn番目の行のmeasure_expr値を戻します。戻り値のデータ型はmeasure_exprです。

analytic_clausewindowing_clauseを省略した場合、デフォルトでRANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROWになります。このデフォルトは、NTH_VALUE ... FROM LAST ... に対して予期しない値を返すことがあります。これは、ウィンドウの最後の値は、ウィンドウの終端になり、その終端が固定されていないためです。これは、現行の行が変化するに伴って変化します。正しい結果を得るには、windowing_clauseRANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWINGとして指定します。または、windowing_clauseRANGE 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.