[출처] lead 와 lag 함수 (프로그램 개발자) |작성자 coolkkm1
LEAD와 LAG 분석 함수는 동일한 테이블에 있는 다른 행의 값을 참조하기 위한 함수이다.
LAG 분석 함수는 현재 행을 기준으로 이전 값을 참조하는 함수이고, LEAD 분석 함수는 이후의 값을 참조하는 함수이다.
LAG와 LEAD 분석 함수에서 지정하는 인수는 현재 행을 기준으로 몇 번째 행을 참조할 것인지를 지정하며, 음수는 사용할 수 없다.
실무 데이터베이스에서 LAG와 LEAD 분석 함수는 일별 매출 추이 등과 같이 연속적인 데이터 값을 분석할 때 유용하게 사용할 수 있다.
【형식】
LEAD | LAG ( value_expression1 [,offset] [,default] )
OVER (
[ PARTITION BY ] [,...]
ORDER BY [collate cluase] [ASC | DESC]
[NULLS FIRST | NULLS LAST]
)
이 함수는 analytic 함수로서, self join하지 않고 하나의 테이블에서 동시에 한 행(row) 이상을 접근할 수 있도록 한다.
【예제】
SQL> select name,salary,LAG(salary,1,0)
2 OVER (ORDER BY salary) FROM employees;
NAME SALARY LAG(SALARY,1,0)OVER(ORDERBYSALARY)
---------- ---------- ----------------------------------
jijoe 220 0
Joe 240 220
Cho 250 240
kim 250 250
SQL> select * from employees;
ID DEPT_NO NAME SALARY BONUS
---------- ---------- ---------- ---------- ----------
1101 10 Cho 250 125
1102 20 Joe 240 100
1103 10 kim 250 100
1104 20 jijoe 220 100
SQL>
다음 예는 deptno=10에 대해 임의의 사용자의 sal 컬럼을 기준으로 한행 다음값과 이전 값을 출력
SQL> SELECT ename, sal,
2 LEAD(sal,1) OVER (ORDER BY sal) AS next_sal,
3 LAG(sal,1) OVER (ORDER BY sal) AS prev_sal
4 FROM emp
5 WHERE deptno=10;
ENAME SAL NEXT_SAL PREV_SAL
---------- ---------- ---------- ----------
MILLER 1300 2450
CLARK 2450 5000 1300
KING 5000 2450
'Database > Oracle' 카테고리의 다른 글
DBMS_OUTPUT.PUT_LINE를 이용하여 로그 찍을때 (0) | 2009.02.02 |
---|---|
오라클 dictionary (0) | 2009.01.17 |
[펌] in 과 not exists 차이 (0) | 2009.01.15 |
튜닝 시 성능에 미치는 sql..알아둘 것 (0) | 2009.01.15 |
SQL 명령 (0) | 2009.01.15 |