문제
다음 [성과] 테이블에서 SQL문을 실행했을 때, 이름이 '한솔'이고 월이 '2'인 행의 누적점수 값을 쓰시오.
| 이름 | 월 | 점수 |
|---|---|---|
| 민지 | 1 | 85 |
| 한솔 | 1 | 90 |
| 민지 | 2 | 75 |
| 한솔 | 2 | 95 |
| 민지 | 3 | 80 |
| 한솔 | 3 | 85 |
SQLSELECT 이름, 월, 점수, CASE WHEN 점수 >= 90 THEN 점수 + SUM(점수) OVER (PARTITION BY 이름 ORDER BY 월 ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) ELSE SUM(점수) OVER (PARTITION BY 이름 ORDER BY 월 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) END AS 누적점수 FROM 성과 ORDER BY 이름, 월;
정답
280
280
해설
한솔의 2월 데이터를 단계별로 계산합니다. 1단계: 한솔 2월 점수는 95점으로 90 이상이므로 WHEN 조건을 적용합니다. 2단계: ROWS BETWEEN 1 PRECEDING AND CURRENT ROW는 이전 1행과 현재 행을 포함합니다. 3단계: 한솔의 1월 점수(90) + 2월 점수(95) = 185점 4단계: CASE 조건에 따라 현재 점수 + 윈도우 함수 결과 = 95 + 185 = 280점 따라서 한솔 2월 행의 누적점수는 280입니다.