학생마다 결제일 순서로 금액을 누적한 다음 결과를 얻으려고 한다. ( … | [SQLD] SQL 개발자 기출유형 모의고사 7회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 7회
학생마다 결제일 순서로 금액을 누적한 다음 결과를 얻으려고 한다. ( ㉠ )에 들어갈 구문으로 옳은 것은?[수강결제]
| 학생번호 | 결제일 | 금액 |
|---|---|---|
| 1 | 2026-03-02 | 100 |
| 2 | 2026-03-03 | 200 |
| 1 | 2026-03-05 | 150 |
| 2 | 2026-03-07 | 50 |
| 1 | 2026-03-09 | 120 |
SELECT 학생번호, 결제일,
SUM(금액) OVER (( ㉠ )) AS 누적액
FROM 수강결제
ORDER BY 학생번호, 결제일;| 학생번호 | 결제일 | 누적액 |
|---|---|---|
| 1 | 2026-03-02 | 100 |
| 1 | 2026-03-05 | 250 |
| 1 | 2026-03-09 | 370 |
| 2 | 2026-03-03 | 200 |
| 2 | 2026-03-07 | 250 |
1
PARTITION BY 학생번호
2
PARTITION BY 결제일
3
ORDER BY 학생번호, 결제일
4
PARTITION BY 학생번호 ORDER BY 결제일
해설
학생번호가 바뀔 때마다 누적액이 처음부터 다시 쌓이고 결제일 순으로 늘어나므로 PARTITION BY 학생번호 와 ORDER BY 결제일 이 함께 있어야 한다.
학생 1 은 100·250·370, 학생 2 는 200·250 으로 파티션 안에서 현재 행까지 더한다.
- ORDER BY 학생번호, 결제일 만 주면 파티션이 없어 학생 2 의 첫 값이 570 으로 이어진다.
- PARTITION BY 학생번호 만 주면 누적이 아니라 학생별 합계 370·250 이 모든 행에 나온다.
- PARTITION BY 결제일 은 날짜마다 파티션이 따로 생겨 각 행의 금액만 나온다.
오류나 개정된 내용이 보이면 알려주세요