次の例では、開始日付別に給与、移動平均(ma)、および移動平均グループの最初と最後の給与を返しています。
この関数は、ウィンドウの最初と最後の値を返します。例では、最初と最後の行がウィンドウ内に収まっています。ウィンドウが3行前と2行前の間にあった場合には、先頭2つの行の最初の値にNULLが表示されます。
SELECT start_date, salary,
AVG(salary) OVER(ORDER BY start_date
ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING) ma,
FIRST_VALUE(salary) OVER(ORDER BY start_date
ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING) first,
LAST_VALUE(salary) OVER(ORDER BY start_date
ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING) last
FROM employee
ORDER BY start_date;
| start_date | salary | ma | first | last |
|---|---|---|---|---|
| 21-MAR-76 | 6661.78 | 6603.280 | 6661.78 | 6544.78 |
| 12-DEC-78 | 6544.78 | 5183.780 | 6661.78 | 2344.78 |
| 24-OCT-82 | 2344.78 | 4471.530 | 6661.78 | 2344.78 |
| 15-JAN-84 | 2334.78 | 4441.780 | 6661.78 | 4322.78 |
| 30-JUL-87 | 4322.980 | 4688.980 | 6544.78 | 7897.78 |
| 31-DEC-90 | 7897.78 | 3626.936 | 2344.78 | 1234.56 |
| 25-JUL-96 | 1234.56 | 3404.536 | 2334.78 | 1232.78 |
| 17-SEP-96 | 1232.78 | 3671.975 | 4322.78 | 1232.78 |