説明
この関数は分析関数であり、順序付き値のうち最初の値を返します。セット内の最初の値がNULL場合、関数はNULL返します。ただし、データ圧縮に役立つIGNORE NULLS指定した場合はこの限りではありません。expr列のNULL値の行に対応する戻り値はNULLです。
構文
FIRST_VALUE { (expr) [{RESPECT | IGNORE} NULLS ]
| (expr [{RESPECT | IGNORE} NULLS ])
}
OVER (analytic_clause)
パラメータの説明
| パラメータ | 説明 |
|---|---|
| expr | 返される値の列名を指定します。 注意 expr に FIRST_VALUE またはその他の分析関数を使用して、分析関数をネストすることはできません。 |
| {RESPECT | IGNORE} NULLS | NULL 値を無視するかどうかを示します。オプションです。デフォルト値は RESPECT NULLS です。
|
| OVER | OVER 句を使用してウィンドウを定義し、計算を行います。詳細については、分析関数の説明を参照してください。 |
戻り値の型
戻り値はパラメータexprのデータ型と同じ、またはNULL返します。
例
既に作成されたテーブルemp_msgがあります。emp_msgテーブルのデータを列salで降順にソートし、mgr列の最初の非NULL値をfirst_mgr列に代入します。
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,mgr,
FIRST_VALUE (MGR) IGNORE NULLS OVER (ORDER BY sal DESC) AS first_mgr
FROM emp_msg
ORDER BY sal DESC;
+--------+--------+------+------+-----------+
| DEPTNO | ENAME | SAL | MGR | FIRST_MGR |
+--------+--------+------+------+-----------+
| 10 | KING | 5300 | NULL | NULL |
| 20 | FORD | 3300 | 7566 | 7566 |
| 20 | SCOTT | 3300 | 7566 | 7566 |
| 20 | JONES | 3275 | 7839 | 7566 |
| 30 | BLAKE | 3150 | 7839 | 7566 |
| 10 | CLARK | 2750 | 7839 | 7566 |
| 30 | ALLEN | 1900 | 7698 | 7566 |
| 30 | TURNER | 1800 | 7698 | 7566 |
| 30 | SCLARK | 1750 | 7839 | 7566 |
| 10 | MILLER | 1600 | 7782 | 7566 |
| 30 | MARTIN | 1550 | 7698 | 7566 |
| 30 | WARD | 1550 | 7698 | 7566 |
| 20 | ADAMS | 1400 | 7788 | 7566 |
| 30 | JAMES | 1250 | 7698 | 7566 |
| 20 | SMITH | 1100 | 7902 | 7566 |
+--------+--------+------+------+-----------+
15 rows in set