학습 자료

ROWS BETWEEN

ROWS BETWEEN 절은 윈도 함수에서 계산에 포함할 행의 범위를 지정하는 구문입니다.

현재 행을 기준으로 앞뒤 어느 행까지 포함할지를 정의할 수 있어, 누적 합계, 이동 평균, 롤링 합계 같은 계산에 자주 사용됩니다.

PARTITION BY가 그룹을 나누는 데 초점을 맞춘다면, ROWS BETWEEN은 계산 범위를 정밀하게 제어하는 역할을 합니다.


문법

ROWS BETWEEN 기본 문법
SELECT column, window_function(...) OVER ( ORDER BY column ROWS BETWEEN frame_start AND frame_end ) AS result FROM table;
  • frame_start: 윈도 시작점
  • frame_end: 윈도 끝점

자주 사용하는 프레임 유형

구문의미
UNBOUNDED PRECEDING첫 번째 행부터 포함
CURRENT ROW현재 행
UNBOUNDED FOLLOWING현재 행부터 마지막 행까지 포함
N PRECEDING현재 행을 기준으로 앞으로 N행
N FOLLOWING현재 행을 기준으로 뒤로 N행

이들을 조합해 다양한 계산 범위를 정의할 수 있습니다.


예시: 누적 합계(Running Total)

아래와 같은 학습 진행 테이블이 있다고 가정해 봅시다.

daily_progress

user_iddateprogress_increment
12024-06-0110
12024-06-0220
12024-06-0315
12024-06-0425

사용자별 누적 학습 진도를 계산해 보겠습니다.

누적 합계 계산
SELECT user_id, date, progress_increment, SUM(progress_increment) OVER ( PARTITION BY user_id ORDER BY date ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW ) AS cumulative_progress FROM daily_progress;

결과

user_iddateprogress_incrementcumulative_progress
12024-06-011010
12024-06-022030
12024-06-031545
12024-06-042570

ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW → 첫 번째 행부터 현재 행까지의 값을 모두 포함하므로, 누적 합계를 계산할 수 있습니다.

Quiz
0 / 1

SQL의 ROWS BETWEEN 절은 윈도 함수에서 사용할 행의 정확한 범위를 지정하는 데 사용할 수 있습니다.

학습 자료

AI 튜터

디자인

업로드

수업 노트

즐겨찾기

도움말

코드 에디터

코드 실행
코드 생성

DB 테이블 구조

실행 결과