문제
다음 SQL에서 PARTITION BY와 프레임 절의 조합으로 직원 'B'의 결과값은?
테이블: EMPLOYEE (DEPT VARCHAR(10), NAME VARCHAR(10), SALARY NUMBER) 데이터: ('IT', 'A', 3000), ('IT', 'B', 4000), ('IT', 'C', 5000), ('HR', 'D', 3000)
SQLSELECT DEPT, NAME, SALARY, AVG(SALARY) OVER( PARTITION BY DEPT ORDER BY SALARY RANGE BETWEEN 1000 PRECEDING AND 1000 FOLLOWING ) AS AVG_SAL FROM EMPLOYEE;
① 3500.0 ② 4000.0 ③ 4333.33 ④ 4500.0
정답
2번
해설
정답: ② IT 부서 내에서 B(4000)의 RANGE BETWEEN 1000 PRECEDING AND 1000 FOLLOWING은 급여 3000~5000 범위의 모든 행을 포함합니다. IT 부서의 A(3000), B(4000), C(5000) 모두 포함되어 평균은 (3000+4000+5000)/3 = 4000입니다. ①은 A와 B만의 평균이고, ③은 잘못된 계산입니다. ④는 B와 C만의 평균으로 RANGE 조건을 잘못 이해한 것입니다.