[SQL] 윈도우함수

Taewoo Kim·2026년 7월 1일

[SQL]

목록 보기
8/8

윈도우 함수(Window Function)란?

윈도우 함수는 행과 행 간의 관계를 정의하여 결과 세트를 계산하는 함수입니다.

💡 GROUP BY와의 결정적 차이점
GROUP BY: 지정한 칼럼을 기준으로 행을 그룹화하여 결과 행의 수가 줄어듭니다.

윈도우 함수: 기존 행의 페이징이나 구조를 유지하면서, 각 행에 계산된 값을 추가합니다. 즉, 기존 행의 수가 그대로 유지됩니다.

기존 문법 구조

윈도우 함수는 OVER 절을 필수로 동반합니다.

SELECT WINDOW_FUNCTION(arguments) OVER (
	[PARTITION BY 컬럼]
    [ORDER BY 컬럼]
    [WINDOWING 절]
) FROM 테이블명;
  • PARTITION BY : 전체 결과 집합을 특정 기준에 따라 소그룹으로 나눔.
  • ORDER BY : 어떤 항목을 기준으로 순위를 정하거나 정렬할지 결정
  • ROWS/RANGE : 함수가 계산될 세부적인 행의 범위(윈도우 크기)를 제한.
분류함수명설명주요 실무 활용 예시
순위 (Ranking)ROW_NUMBER()동점자가 있어도 무조건 1, 2, 3, 4 등 고유한 순위를 부여게시판 페이징 처리, 최신 데이터 1건만 추출할 때
RANK()동점자에게 공동 순위를 부여하고, 다음 순위는 건너뜀 (예: 1, 2, 2, 4)시험 석차 구하기, 매출 상위 TOP N 경쟁사 분석
DENSE_RANK()동점자에게 공동 순위를 부여하지만, 다음 순위를 연속해서 부여 (예: 1, 2, 2, 3)등수 건너뜀 없이 등급을 매길 때
NTILE(N)전체 행을 지정한 개수 N개의 그룹으로 균등하게 분할고객 데이터 기반 상위 25%(4분위) 타겟팅 군집 분할
집계 (Aggregation)SUM()파티션별 또는 지정된 윈도우 범위 내의 누적 합계 계산일별 누적 매출액 계산, 월별 지출 합계 추이
AVG()파티션별 또는 지정된 윈도우 범위 내의 평균값 계산최근 3개월간의 이동 평균 매출, 부서별 평균 급여 비교
COUNT()파티션별 또는 지정된 윈도우 범위 내의 행 개수 계산특정 기간 동안 고객별 누적 구매 횟수 카운트
MAX() / MIN()파티션별 또는 지정된 윈도우 범위 내의 최대값 / 최소값 추출현재 직원 급여와 부서 내 최고/최저 급여를 동시에 비교
행 순서 (Value)LAG(컬럼, N)현재 행을 기준으로 N번째 이전 행의 값을 가져옴전월 대비 매출 성장률 계산, 이전 상담 기록 매칭
LEAD(컬럼, N)현재 행을 기준으로 N번째 이후 행의 값을 가져옴현재 이벤트 종료일과 다음 이벤트 시작일 간격 계산
FIRST_VALUE()파티션별 또는 지정된 윈도우 범위 내의 가장 첫 번째 행의 값을 가져옴우리 부서에서 가장 먼저 입사한 사람의 입사일 조회
LAST_VALUE()파티션별 또는 지정된 윈도우 범위 내의 가장 마지막 행의 값을 가져옴현재까지 마감된 자산의 최종 잔액 확인
비율 (Ratio)CUME_DIST()파티션 내에서 현재 값보다 작거나 같은 값의 누적 백분율(0~1) 계산내 성적이 상위 몇 %에 위치하는지 상대적 위치 파악
PERCENT_RANK()파티션 내에서 현재 행의 상대적 순위 백분율(0~1) 계산데이터 분포도 분석 및 백분위수 시각화 데이터 준비

S

0개의 댓글