문제
다음 데이터에서 각 직원의 급여와 직전/직후 직원 급여의 평균을 구할 때, FIRST_VALUE와 LAST_VALUE 결과는?
SAL 순서: 1000, 2000, 3000, 4000 급여 2000인 직원의 계산:
SQL: SELECT SAL, AVG(SAL) OVER(ORDER BY SAL ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS AVG_VAL, FIRST_VALUE(SAL) OVER(ORDER BY SAL ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS FIRST_VAL, LAST_VALUE(SAL) OVER(ORDER BY SAL ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS LAST_VAL
① AVG_VAL=2000, FIRST_VAL=1000, LAST_VAL=3000 ② AVG_VAL=2000, FIRST_VAL=2000, LAST_VAL=2000 ③ AVG_VAL=2000, FIRST_VAL=1000, LAST_VAL=2000 ④ AVG_VAL=1500, FIRST_VAL=1000, LAST_VAL=2000
정답
1번
해설
① 급여 2000인 직원의 윈도우 프레임은 1000(직전), 2000(현재), 3000(직후)입니다. AVG_VAL=(1000+2000+3000)/3=2000, FIRST_VALUE는 프레임의 첫 번째 값인 1000, LAST_VALUE는 프레임의 마지막 값인 3000입니다. ② FIRST_VALUE와 LAST_VALUE가 모두 현재 행 값으로 잘못 계산했습니다. ③ LAST_VALUE를 현재 행 값으로 잘못 계산했습니다. ④ 평균 계산이 틀렸습니다.