문제
다음 SQL의 실행 결과에서 직원 'C'의 PREV_SAL 값은?
테이블: EMP (NAME VARCHAR(10), SALARY NUMBER) 데이터: A=1000, B=1500, C=2000, D=2500 (SALARY 오름차순)
SQLSELECT NAME, SALARY, LAG(SALARY, 2, 0) OVER(ORDER BY SALARY) AS PREV_SAL FROM EMP ORDER BY SALARY;
① 0 ② 1000 ③ 1500 ④ NULL
정답
2번
해설
정답: ② LAG(SALARY, 2, 0)는 현재 행에서 2행 이전의 SALARY 값을 반환하며, 값이 없으면 기본값 0을 반환합니다. C(2000)의 2행 이전은 A(1000)이므로 1000입니다. ①은 LAG 함수에서 참조할 행이 없을 때의 기본값이지만 C는 2행 이전에 A가 존재합니다. ③은 1행 이전인 B의 값입니다. ④는 기본값을 지정했으므로 NULL이 나올 수 없습니다.