説明
この関数は、analytic_clause で定義されたウィンドウ内の n 番目の行の measure_expr の値を返します。
構文
NTH_VALUE (measure_expr, n)
[ FROM { FIRST | LAST } ][ { RESPECT | IGNORE } NULLS ]
OVER (analytic_clause)
パラメータの説明
| パラメータ | 説明 |
|---|---|
| measure_expr | 返されるデータのフィールドを指定します。 |
| n | 測定値を返す n 番目の行を指定します。n の値は正の整数です。 注記
|
| FROM { FIRST | LAST } | 計算方向を指定します。オプションで、デフォルト値は FROM FIRST です。
|
| {RESPECT | IGNORE} NULLS | NULL 値を無視するかどうかを指定します。オプションです。デフォルト値は RESPECT NULLS です。
|
| OVER | OVER 句を使用してウィンドウを定義し、計算を実行します。詳細については、分析関数の説明を参照してください。 |
戻り値の型
戻り値はパラメータ measure_expr のデータ型と同じです。
例
既に作成されているテーブル emp_msg があります。テーブル emp_msg を照会し、列 deptno でグループ化し、列 sal で降順にソートして、列 sal の4番目の値を返します。
obclient> SELECT * FROM emp_msg;
+--------+--------+------+------+
| DEPTNO | ENAME | SAL | MGR |
+--------+--------+------+------+
| 10 | CLARK | 2750 | 7839 |
| 10 | KING | 5300 | NULL |
| 10 | MILLER | 1600 | 7782 |
| 20 | ADAMS | 1400 | 7788 |
| 20 | FORD | 3300 | 7566 |
| 20 | JONES | 3275 | 7839 |
| 20 | SCOTT | 3300 | 7566 |
| 20 | SMITH | 1100 | 7902 |
| 30 | ALLEN | 1900 | 7698 |
| 30 | BLAKE | 3150 | 7839 |
| 30 | JAMES | 1250 | 7698 |
| 30 | MARTIN | 1550 | 7698 |
| 30 | TURNER | 1800 | 7698 |
| 30 | WARD | 1550 | 7698 |
| 30 | SCLARK | 1750 | 7839 |
+--------+--------+------+------+
15 rows in set
obclient> SELECT deptno,ename,sal,
NTH_VALUE(sal,4) OVER (PARTITION BY deptno ORDER BY sal DESC
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) AS third_most_sal
FROM emp_msg
ORDER BY deptno,sal DESC;
+--------+--------+------+----------------+
| DEPTNO | ENAME | SAL | THIRD_MOST_SAL |
+--------+--------+------+----------------+
| 10 | KING | 5300 | NULL |
| 10 | CLARK | 2750 | NULL |
| 10 | MILLER | 1600 | NULL |
| 20 | FORD | 3300 | 1400 |
| 20 | SCOTT | 3300 | 1400 |
| 20 | JONES | 3275 | 1400 |
| 20 | ADAMS | 1400 | 1400 |
| 20 | SMITH | 1100 | 1400 |
| 30 | BLAKE | 3150 | 1750 |
| 30 | ALLEN | 1900 | 1750 |
| 30 | TURNER | 1800 | 1750 |
| 30 | SCLARK | 1750 | 1750 |
| 30 | MARTIN | 1550 | 1750 |
| 30 | WARD | 1550 | 1750 |
| 30 | JAMES | 1250 | 1750 |
+--------+--------+------+----------------+
15 rows in set