[ 윈도우 함수 ]
윈도우 함수는 분석 함수라고 부르기도 한다.
누적합계, 누적비율, 누적등수 등
각각의 행들의 관계에서 연산을 처리할 필요가 있는데
이러한 연산처리를 할 수 있게 하는 것이 윈도우 함수이다.
(윈도우 함수는 중첩하여 호출할 수 없다)
[ 윈도우 함수의 종류 ]
| 유형 | 함수명 | 설명 |
| 순위 관련 함수 |
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 |