본문 바로가기
Resource/SQLD

[SQLD] 윈도우 함수

by 우창욱 2024. 2. 13.

PARTITION BY

PARTITION BY 구문은 윈도우 함수의 실행 방식을 구성하는 데 필수적인 구문이며, 윈도우 함수의 작용 범위를 세분화하는 역할을 합니다. 이 구문은 결과 세트를 특정 열(들)의 값에 따라 여러 파티션이나 그룹으로 나누는 데 사용됩니다. 이렇게 분할함으로써, 각 그룹내에서 집계 함수(AVG, SUM, COUNT 등)를 독립적으로 적용할 수 있으며, 각 행에 대한 계산을 그룹별로 수행할 수 있습니다.

 

예를 들어, 직원들의 급여에 대한 데이터가 있고 부서별로 평균 급여를 계산하고 싶다고 가정한다면, 이 경우 `PARTITION BY` 구분을 사용하여 부서별로 데이터를 파티션하고, 각 부서 내에서 평균 급여를 계산할 수 있습니다.

 

SELECT 부서,
       이름,
       급여,
       AVG(급여) OVER (PARTITION BY 부서) AS 부서별_평균_급여
FROM 직원;

 

RAW 데이터 테이블

부서 이름 급여
영업 홍길동 3000
영업 김철수 3500
개발 이영희 4000
개발 박민수 4200
인사 최영미 2800
인사 김영호 2900

 

PARTITION BY 구문으로 계산한 테이블

부서 이름 급여 부서별_평균_급여
영업 홍길동 3000 3250.0
영업 김철수 3500 3250.0
개발 이영희 4000 4100.0
개발 박민수 4200 4100.0
인사 최영미 2800 2850.0
인사 김영호 2900 2850.0

윈도우 함수(Window Functions)

1. 집계 함수(Agreegate Functions)

- SUM()

- AVG()

- COUNT()

- MAX()

- MIN()

2. 순위 함수(Ranking Functions)

- ROW_NUMBER()

- RANK() : 동일한 값을 가진 행들에 동일한 값을 부여하고 순위에 건너뛰기를 적용합니다.

- DENSE_RANK() : RANK()와 비슷하지만, 순위에 건너뛰기 없이 연속적인 순위를 부여합니다.

- NTILE(N):  결과 세트를 N 개의 동일한 크기의 그룹으로 나누고, 각 행에 그룹 번호를 할당합니다.

3. 분석 함수(Analytic Functions)

- LEAD()

- LAG()

- FIRST_VALUE()

- LAST_VALUE()

- RATIO_TO_REPORT() : 전체에 대한 현재 행의 값의 비율을 계산합니다.

4. 통계 함수(Statistical Functions)

- STDDEV()

- VARIANCE()

5. 분포 함수(Distribution Functions)

- CUME_DIST() : 현재 행의 누적 분포 값을 계산합니다.

- PERCENT_RANK() : 현재 행의 백분위 순위를 계산합니다.

 

'Resource > SQLD' 카테고리의 다른 글

[SQLD] SQL 기본  (0) 2024.02.24
[SQLD] 데이터 모델과 성능  (0) 2024.02.21
[SQLD] 데이터 모델링의 이해  (0) 2024.02.19
[SQLD] 조인 (Join)  (0) 2024.02.19
[SQLD] 인덱스  (0) 2024.02.18