문제
다음 [성적] 테이블에서 SQL문을 실행했을 때, 학번이 '102'인 학생의 두 번째 과목(수학)에 대한 running_sum 값을 쓰시오.
| 학번 | 과목 | 점수 |
|---|---|---|
| 101 | 수학 | 85 |
| 102 | 수학 | 90 |
| 103 | 수학 | 78 |
| 101 | 영어 | 92 |
| 102 | 영어 | 88 |
SQLSELECT 학번, 과목, 점수, SUM(점수) OVER (PARTITION BY 학번 ORDER BY 과목) AS running_sum FROM 성적 ORDER BY 학번, 과목;
정답
178
178
해설
SUM() OVER 윈도우 함수는 PARTITION BY로 학번별로 구분하고, ORDER BY 과목으로 정렬한다. ORDER BY 과목에서는 한글 가나다순으로 정렬되므로 '영어'가 '수학'보다 먼저 나온다. 따라서 학번 102의 경우 '영어'(88점)가 첫 번째, '수학'(90점)이 두 번째가 된다. '수학'의 running_sum은 '영어'(88점) + '수학'(90점) = 178점이 된다.