문제
다음 윈도우 함수의 실행 결과로 가장 적절한 것은?
SQL직원테이블: 이름, 급여 A, 3000 B, 2000 C, 4000 D, 1000 SELECT 이름, 급여, SUM(급여) OVER(ORDER BY 급여 ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS 이동합계 FROM 직원테이블;
① D: 1000, C: 5000, B: 6000, A: 7000 ② D: 1000, B: 3000, A: 7000, C: 7000 ③ D: 1000, B: 3000, A: 5000, C: 7000 ④ D: 1000, B: 2000, C: 4000, A: 3000
정답
3번
해설
급여 순으로 정렬하면 D(1000), B(2000), A(3000), C(4000) 순입니다. ROWS BETWEEN 1 PRECEDING AND CURRENT ROW는 이전 1행과 현재 행의 합을 구합니다. D: 1000(자신만), B: 1000+2000=3000, A: 2000+3000=5000, C: 3000+4000=7000이 됩니다. ①②④는 계산이나 정렬 순서가 잘못되었습니다.