카테고리 없음

SQL WINDOWING

Code Canvas 2025. 11. 13. 15:04

WINDOWING 절의 구조

ROWS | RANGE | GROUPS BETWEEN <시작> AND <끝>

 

  • ROWS
    • 물리적 행 개수
    • 정확히 N개 행을 포함하고 싶을 때
  • RANGE
    • 논리적 값 범위
    • 같은 값을 가진 행을 모두 포함하고 싶을 때
  • GROUPS
    • 같은 값을 가진 그룹 단위
    • 중복값을 하나의 그룹으로 처리할 때

 

 

  • UNBOUNDED PRECEDING: 파티션의 첫 행
  • N PRECEDING: 현재 행 기준 N개 이전 행
  • CURRENT ROW: 현재 행
  • N FOLLOWING: 현재 행 기준 N개 이후 행
  • UNBOUNDED FOLLOWING: 파티션의 마지막 행

 

 

#### ROWS BETWEEN 2 PRECEDING AND 2 FOLLOWING
```
Math | 70    ← 2 PRECEDING (위로 2개)
Math | 71    ← 1 PRECEDING (위로 1개)
Math | 72    ← CURRENT ROW (현재)
Math | 80    ← 1 FOLLOWING (아래로 1개)
Math | 81    ← 2 FOLLOWING (아래로 2개)
---------
포함: 5개 행
합계: 70+71+72+80+81 = 374
```

#### RANGE BETWEEN 2 PRECEDING AND 2 FOLLOWING
```
범위: 72-2 ~ 72+2 = 70~74

Math | 70    ← ✅ (70은 70~74 범위)
Math | 71    ← ✅ (71은 70~74 범위)
Math | 72    ← ✅ (72는 70~74 범위, 현재)
Math | 80    ← ❌ (80 > 74, 범위 벗어남!)
Math | 81    ← ❌ (81 > 74, 범위 벗어남!)