Database/SQL
ORACLE LAG, LEAD 함수 사용법 (이전, 다음 행의 값에 접근)
리커니
2021. 10. 7. 10:15
반응형
ORACLE LAG, LEAD 함수 사용법 (이전, 다음 행의 값에 접근)
오라클에서 조회한 데이터의 이전, 다음 행에 접근해야 하는 경우가 있습니다.
뭔가 순서가 있는 데이터에서 사용을 하는데요,
이번 포스팅에서는 이전, 다음 행에 접근하는 LAG, LEAD 함수의 사용법을 알아보겠습니다.
LAG : 이전 행의 값에 접근
LEAD : 다음 행의 값에 접근
예를들어 학생별로 수학 점수가 있는 데이터가 있을 때,
점수로 정렬 한 후 다음 학생과의 점수차를 구하고 싶다고 한다면 아래와 같이 작성할 수 있습니다.
WITH STUDENT AS (
SELECT '이루리' AS STDT_NM, '수학' AS SBJT, 80 AS SCORE FROM DUAL UNION ALL
SELECT '이건' AS STDT_NM, '수학' AS SBJT, 100 AS SCORE FROM DUAL UNION ALL
SELECT '이기자' AS STDT_NM, '수학' AS SBJT, 70 AS SCORE FROM DUAL
)
SELECT STDT_NM
, SBJT
, SCORE
, SCORE - NEXT_SCORE
FROM (
SELECT STDT_NM
, SBJT
, SCORE
, LAG(SCORE) OVER(ORDER BY SCORE DESC) AS BEFORE_SCORE
, LEAD(SCORE) OVER(ORDER BY SCORE DESC) AS NEXT_SCORE
FROM STUDENT
)
[결과]
위의 쿼리에서 아래 서브쿼리를 조회하여 BEFORE_SOCRE와 NEXT_SCORE를 조회 해보면
점수로 정렬된 이전 행과 다음행의 값에 접근 하는 것을 확인하실 수 있습니다.
반응형