핵심 인사이트 (3줄 요약)

  1. 본질: Window Frame은 ROWS(물리적 행 수)/RANGE(논리적 값 범위)로 현재 행 기준 참조 범위를 정의하며, UNBOUNDED PRECEDING·CURRENT ROW·N FOLLOWING 등으로 세밀하게 제어한다.
  2. 가치: SUM(sal) OVER (ORDER BY date ROWS BETWEEN 2 PRECEDING AND CURRENT ROW)처럼 이동 평균·누적합·연속 N일 집계를 SQL만으로 구현할 수 있어 별도 프로그래밍이 불필요하다.
  3. 판단 포인트: ROWS(물리적 행 수, 동점 무관)와 RANGE(논리적 값, 동점 포함)의 차이를 이해하고, 기본 Frame(RANGE UNBOUNDED PRECEDING)을 명시적으로 지정하는 것이 안전하다.

Ⅰ. 개요 및 필요성

누적합: SUM(sal) OVER (ORDER BY id ROWS UNBOUNDED PRECEDING)
이동평균(3일): AVG(val) OVER (ORDER BY dt ROWS BETWEEN 2 PRECEDING AND CURRENT ROW)
RANGE: AVG(sal) OVER (ORDER BY sal RANGE BETWEEN 1000 PRECEDING AND 1000 FOLLOWING)
  • 📢 섹션 요약 비유: Window Frame은 망원경 줌이다. 얼마나 넓게(UNBOUNDED) 또는 좁게(1 PRECEDING) 볼지 조절한다.

Ⅱ~Ⅴ. 결론

Window Frame은 이동 평균·누적합·연속 집계의 핵심이며, ROWS/RANGE 차이를 명확히 이해해야 한다.


📌 관련 개념 맵

개념연결 포인트
ROWS물리적 행 수
RANGE논리적 값 범위
UNBOUNDED전체 범위
누적합Running Total
이동 평균Moving Average

📈 관련 키워드 및 발전 흐름도

[기본 Window Function (SQL:2003)] → [ROWS/RANGE Frame]
    → [GROUPS Frame (SQL:2011)]
    → [현재: Window Function 최적화 — Segment Tree 기반]

👶 어린이를 위한 3줄 비유 설명

  1. Window Frame은 망원경 줌이에요. 넓게 or 좁게 볼 범위를 정해요.
  2. "최근 3일 평균"은 2 PRECEDING으로 앞 2행+현재 행을 봐요.
  3. "전체 누적합"은 UNBOUNDED PRECEDING으로 처음부터 다 더해요!