select classId
, avgPoints
, lag(avgPoints, 1) over (order by classId) prevAvg
, lead(avgPoints, 1) over (order by classId) nextAvg
from (
select '2-1' classId
, 98.3 avgPoints
from dual
union all
select '2-2' classId
, 72.5 avgPoints
from dual
union all
select '2-3' classId
, 58.9 avgPoints
from dual
union all
select '2-4' classId
, 88.2 avgPoints
from dual
)
//-------------조회결과----------------
CLASSID AVGPOINTS PREVAVG NEXTAVG
2-1 98.3 72.5
2-2 72.5 98.3 58.9
2-3 58.9 72.5 88.2
2-4 88.2 58.9
lag(avgPoints, 1) over (order by classId) prevAvg
//커서를 뒤로 이동하여 조회하고자 하는 값 avgPoints, 이동되는 수 1, 정렬기준 classId
lead(avgPoints, 1) over (order by classId) nextAvg
//커서를 앞으로 이동하여 조회하고자 하는 값 avgPoints, 이동되는 수 1, 정렬기준 classId
'Carpe Programming > oracle' 카테고리의 다른 글
필드명 테이블 명으로 테이블 조회 (0) | 2009.10.26 |
---|---|
데이터베이스 설계의 핵심 개념을 잡아라! (0) | 2009.10.20 |
오라클 row 순서 관리 RANK() , ROW_NUMBER() (0) | 2009.10.20 |
insert와 update를 한꺼번에 처리 (0) | 2009.10.20 |
오라클 내부 함수 정리 (0) | 2009.10.14 |