학습 자료

ROWS BETWEEN

ROWS BETWEEN 절은 윈도 함수가 사용할 윈도 프레임을 정의합니다. 계산에 포함될 행이 정확히 어떤 것인지 제어합니다.

이는 누적 합, 롤링 합(구간 합), 이동 평균을 계산할 때 특히 유용합니다.

PARTITION BY가 행을 그룹으로 나누는 것과 달리, ROWS BETWEEN은 현재 행을 기준으로 앞뒤 어느 범위의 행을 계산에 포함할지를 제어합니다.


Syntax

다음과 같이 ROWS BETWEEN을 사용해 윈도 프레임을 정의할 수 있습니다.

ROWS BETWEEN 문법
SELECT column, window_function(...) OVER ( ORDER BY column ROWS BETWEEN frame_start AND frame_end ) AS result FROM table;

Common frame types

일반적으로 ROWS BETWEEN은 현재 행을 기준으로 윈도 함수가 계산에 사용할 정확한 행 범위를 정의합니다.

자주 사용하는 프레임 유형은 다음과 같습니다.

  • UNBOUNDED PRECEDING: 처음 행부터 현재 행까지
  • CURRENT ROW: 현재 처리 중인 행
  • UNBOUNDED FOLLOWING: 현재 행부터 마지막 행까지
  • N PRECEDING / N FOLLOWING: 현재 행 기준으로 앞/뒤 N개의 행

Example: Running Total

다음과 같은 테이블이 있다고 가정해봅시다.

daily_progress

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

사용자별 누적 진행량을 계산해 보겠습니다.

누적 진행량 계산에 ROWS BETWEEN 사용
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;

쿼리 결과는 다음과 같습니다.

Result:

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 테이블 구조

실행 결과