SQL-L4-003 / 고급 윈도
누적 합 초기화
고급문제
events를 id순으로 처리합니다. reset=1이면 그 행에서 누적합을 0으로 초기화하고 delta를 더합니다. id, 누적합을 조회하세요.
결과의 열 순서와 행 순서를 지키세요. 별칭 이름은 자유지만 열 개수와 값은 일치해야 합니다. SQLite 기준입니다.
입출력 예시
테이블과 예제 데이터
CREATE TABLE events (id INTEGER, delta INTEGER, reset INTEGER); INSERT INTO events VALUES (1,5,0),(2,2,0),(3,10,1),(4,-3,0);
첫 데이터의 기대 결과 · 행 순서대로
[
[
1,
5
],
[
2,
7
],
[
3,
10
],
[
4,
7
]
]서로 다른 준비 데이터 2개에서 확인해요.
힌트
reset의 누적합으로 새로운 파티션을 만드세요.
해설·정답 보기
초기화 지점을 그룹으로 만든 뒤 그룹 안에서 다시 누적합을 계산합니다.
WITH g AS(SELECT *,SUM(reset) OVER(ORDER BY id ROWS UNBOUNDED PRECEDING) grp FROM events) SELECT id,SUM(delta) OVER(PARTITION BY grp ORDER BY id ROWS UNBOUNDED PRECEDING) FROM g ORDER BY id;
query.sql결과 비교
코드는 이 브라우저에 자동 저장돼요.
풀이 결과
코드를 작성하고 채점하기를 눌러보세요.
학습용으로 제공된 조건을 확인해요. 알고리즘 사용 방식·설계 의도는 해설과 함께 비교해보세요.