select e.ename, e.sal ,first_value(ename) over (order by sal) first_sal_asc ,first_value(ename) over (order by sal desc) first_sal_desc ,last_value(ename) over (order by sal) last_sal_asc ,last_value(ename) over (order by sal desc) last_sal_desc from emp e;
제 생각에는 first_sal_desc와 last_sal_asc 는 같아야 하고 first_sal_asc와 last_sal_desc 가 같아야 한다고 생각하는데... 제가 잘못 아는게 뭔지 모르겠네요...
분석함수 중 ORDER BY 절이 들어가는 경우에는
그 처리 범위가 WINDOW 절을 통해 주어지게 되는데요.
생략시 기본 구문은 다음과 같습니다.
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
처음부터 현재행까지입니다.
즉 전체 정렬 결과의 마지막이라 생각하신 거겠지만.
전체가 아닌 현재행까지의 정렬결과의 마지막으로 동작한것 입니다.
동일한 결과를 얻으려면
RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
http://www.gurubee.net/lecture/2674