last_value 예상했던거와 다르게 나와요.... 0 2 1,754

by 날도 [2015.01.26 10:20:43]


1.png (28,867Bytes)


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 가 같아야 한다고 생각하는데... 제가 잘못 아는게 뭔지 모르겠네요...
by 마농 [2015.01.26 10:42:00]

분석함수 중 ORDER BY 절이 들어가는 경우에는
그 처리 범위가 WINDOW 절을 통해 주어지게 되는데요.
생략시 기본 구문은 다음과 같습니다.
RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
처음부터 현재행까지입니다.
즉 전체 정렬 결과의 마지막이라 생각하신 거겠지만.
전체가 아닌 현재행까지의 정렬결과의 마지막으로 동작한것 입니다.
동일한 결과를 얻으려면
RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
http://www.gurubee.net/lecture/2674


by 날도 [2015.01.26 10:45:05]

아! 저 범위 항상 헷깔리게 하는군요. 감사합니다~!!!!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입