문제
다음 [직원] 테이블에서 SQL문을 실행했을 때, 이름이 '김철수'인 행의 prev_sal 값을 쓰시오. (NULL인 경우 'NULL'이라고 쓰시오)
| 이름 | 부서 | 급여 |
|---|---|---|
| 이영희 | 개발 | 4500 |
| 김철수 | 개발 | 5000 |
| 박민수 | 개발 | 4800 |
| 최지은 | 영업 | 4200 |
SQLSELECT 이름, 급여, LAG(급여, 1) OVER (PARTITION BY 부서 ORDER BY 급여 ASC) AS prev_sal FROM 직원;
정답
4800
4800
해설
LAG() 함수는 현재 행의 이전 행 값을 가져옵니다.
- PARTITION BY 부서로 개발 부서만 분리됩니다.
- ORDER BY 급여 ASC로 개발 부서 내에서 급여 오름차순 정렬합니다.
- 정렬 결과: 이영희(4500) → 박민수(4800) → 김철수(5000)
- LAG(급여, 1)은 현재 행의 바로 이전 행의 급여를 가져옵니다.
- 김철수(5000)의 바로 이전 행은 박민수(4800)이므로 prev_sal = 4800입니다.