DBMS별 확인

윈도우 함수 이식성은 프레임 문법에서 갈린다

순위, 오프셋, 누적 집계는 대부분 익숙하게 옮겨지지만 RANGE, GROUPS, EXCLUDE는 제품과 버전마다 제약이 다르다. 공통 문법과 고급 프레임을 분리해서 검토한다.

운영 사용 가능
문법·버전 제약 확인
대체 SQL 필요
공통층 PARTITION BY, ORDER BY, ROWS 중심으로 먼저 작성한다.
확인층 RANGE, 동률, 경계 행은 샘플 결과로 검증한다.
분기층 GROUPS, EXCLUDE는 DBMS와 버전별 SQL로 나눈다.
기본 문법

OVER는 파티션과 정렬부터 맞춘다

  • PARTITION BY로 그룹을 자른다.
  • ORDER BY로 행의 순서를 고정한다.
  • 순위, 오프셋, 누적 집계는 이 범위에서 먼저 푼다.
프레임 확인

ROWS, RANGE, GROUPS를 나눈다

  • ROWS는 행 개수, RANGE는 값 범위다.
  • GROUPS는 동점 묶음 단위로 이동한다.
  • 성능은 정렬, 파티션 크기, 인덱스 영향을 함께 본다.
예외 옵션

EXCLUDE와 고급 프레임은 버전을 고정한다

  • 현재 행 제외, 동점 제외는 제품 차이가 크다.
  • 필요하면 DBMS별 SQL이나 대체 계산을 따로 둔다.
  • 운영 DB 버전의 공식 문서를 최종 기준으로 삼는다.

지원 여부보다 제약 조건을 먼저 본다

이식성 기준
기능 Oracle MySQL 8 PostgreSQL SQL Server
순위·오프셋 함수 공통ROW_NUMBER, LAG/LEAD 공통8.0 이상 기준 공통순위·오프셋 함수 공통OVER 기반
ROWS 프레임 지원행 개수 프레임 지원행 개수 프레임 지원행 개수 프레임 지원함수별 허용 확인
RANGE 값 범위 제약단일 정렬식·타입 확인 제약동적 경계 미지원 지원단일 ORDER BY 필요 제약n PRECEDING 불가
GROUPS / EXCLUDE 21c+GROUPS/EXCLUDE 문법 미지원파싱되지만 미지원 지원GROUPS와 EXCLUDE 미지원대체 SQL 설계

운영 전 점검 순서

쿼리 검토
01 공통 문법으로 먼저 작성

PARTITION BY, ORDER BY, ROWS 중심으로 시작한다.

02 프레임 의미를 테스트

동률, NULL, 경계 행이 기대한 결과를 만드는지 샘플로 확인한다.

03 제품별 옵션을 분리

고급 옵션은 DBMS별 SQL 또는 기능 플래그로 분기한다.

04 실행 계획까지 확인

정렬, 파티션 크기, 임시 저장소 사용량을 함께 본다.

이 표는 설계 검토용 기준이다. 실제 채택 여부는 운영 중인 DBMS의 정확한 버전, 호환성 모드, 공식 문서, 테스트 쿼리 결과로 확정한다.