説明
この関数は分析関数であり、順序付けられた値のうち最初の値を返します。セットの最初の値が 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