개주 훈련일지/📚 코살대 교본 학습

SQL) 윈도우 함수

lshfood2 2026. 2. 8. 17:41

[ 윈도우 함수 ]

윈도우 함수는 분석 함수라고 부르기도 한다.

누적합계, 누적비율, 누적등수 등

각각의 행들의 관계에서 연산을 처리할 필요가 있는데

이러한 연산처리를 할 수 있게 하는 것이 윈도우 함수이다.

(윈도우 함수는 중첩하여 호출할 수 없다)


[ 윈도우 함수의 종류 ]

유형 함수명 설명
순위 관련
함수
RANK 지정한 기준에 따라
순위를 구한다.
동일 순위가 있다면
건너뛰고
다음 순위로 산출한다.
1,2,2,4
DENSE_RANK 지정한 기준에 따라
순위를 구한다.
동일 순위가 있다면
건너뛰지 않고
다음 순위로 산출한다.
1,2,2,3,4
ROW_NUMBER 지정한 기준에 따라
순위를 구한다.
동일 순위가 있어도
무조건 순위를 산출한다.
1,2,3,4
집계 관련
함수
SUM 지정한 기준에 따라
합계를 구한다.
MAX 지정한 기준에 따라
최대값을 구한다.
MIN 지정한 기준에 따라
최소값을 구한다.
AVG 지정한 기준에 따라
평균값을 구한다.
COUNT 지정한 기준에 따라
개수를 구한다.
행순서 관련
함수
FIRST_VALUE 지정한 기준에 따라
가장 먼저 나오는 값을 구한다.
LAST_VALUE 지정한 기준에 따라
가장 나중에 나오는 값을 구한다.
LAG 지정한 기준에 따라
이전값을 구한다.
LEAD 지정한 기준에 따라
다음값을 구한다.
그룹내
비율 관련
함수
CUME_DIST 지정한 기준에 따라
누적백분율을 구한다.
지속적으로 누적되다가
최종행은 1이 된다.
PERCENT_RANK 지정한 기준에 따라
각 행의 순서별 백분율을 구한다.
제일 먼저 나오는 것을 0,
가장 늦게 나오는 것을 1
NTILE 지정한 기준에 따라
특정 값으로 N등분한
결과를 구한다.
RATIO_TO_REPORT 지정한 기준에 따라
각 행이 차지하는
비율을 나타낸다.

[ 윈도우 함수 문법 ]

윈도우 함수는 SELECT절에서 사용되며

기본적인 문법은 아래와 같다.

SELECT
    윈도우함수(인자) OVER (
        PARTITION BY 파티션컬럼1, 파티션컬럼2
        ORDER BY 정렬컬럼1 ASC, 정렬컬럼2 DESC
        ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
        -- 또는
        -- ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
    ) AS 별칭
FROM 테이블명;

-- RANGE 버전(값의 범위 기준, DB/정렬컬럼 타입에 따라 사용)
SELECT
    윈도우함수(인자) OVER (
        PARTITION BY 파티션컬럼1
        ORDER BY 정렬컬럼1
        RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
    ) AS 별칭
FROM 테이블명;

-- 프레임 시작/끝에 올 수 있는 키워드 조합 예시
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW
ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING
ROWS BETWEEN n PRECEDING AND n FOLLOWING
항목 설명
윈도우함수 윈도우 함수를 기재한다.

예: ROW_NUMBER(), RANK(), DENSE_RANK(),
SUM(), AVG(), COUNT(), LAG(), LEAD()
인자 윈도우 함수에 따라 0개 혹은
그 이상의 인자 값을 넣을 수 있다.
OVER 윈도우 함수 사용 시 OVER는 반드시 들어가야 한다.
PARTITION BY FROM절 이하에서 나온 결과집합을
특정 칼럼(들)을 기준으로 그룹화할 수 있다.

예: 전체 직원정보를 출력하면서
각 직원이 속한 부서별로 그룹화할 수 있다.
ORDER BY ORDER BY에 기재한 정렬 기준에
윈도우 함수의 결과가 달라질 수 있다.

예 : RANK 함수를 이용 시 ORDER BY에 연봉을
DESC로 기재하면 연봉이 높은 사람이 1등이 된다.
윈도우절 윈도우 함수가 연산을 처리하는
대상이 되는 행의 범위를 지정할 수 있다.

'개주 훈련일지 > 📚 코살대 교본 학습' 카테고리의 다른 글

SQL) DCL (Data Control Language)  (0) 2026.02.09
아키텍처 기초  (0) 2026.02.09
컴포넌트 구성 원리  (0) 2026.02.07
객체지향 설계 원리  (1) 2026.02.06
SQL) 그룹 함수  (0) 2026.02.02