본문 바로가기

3-1/데이터베이스 (실습)

[데이터베이스 실습] 9. 그룹 함수, 윈도우 함수

그룹함수: 그룹별로 소계를 내주는 함수

 

ROLLUP (A, B, ...): 뒤에서부터 소계를 낸다. A에 대한 그룹핑을 하고 B에 대한 소계를 낸 후에 A에 대해서만 소계를 내고 최종적으로 통계를 낸다.

해당 ROW가 어느 칼럼에 대한 소계인지 알고 싶다면 GROUPING을 사용하면 된다.

 

CUBE (A, B, ...): 순서가 상관이 없다. 모든 칼럼에 대해 소계를 내고(모두 그룹핑, 모두 안 그룹핑, A만 그룹핑, B만 그룹핑 등등..) 마지막에는 통계를 낸다.

 

GROUPING SETS(A, B, ...): 순서가 상관이 없다. 모든 칼럼을 하나씩 그룹핑하여 소계를 내고, 해당 로우들을 전부 합친다.

 


윈도우 함수: ROW끼리의 관계를 정의하는 함수

 

양식: [WINDOW FUN] (PARAMETERS) OVER (PARTITION BY [ROW] ORDER BY [ROW]) [ROW/RANGE]

PARTITION == ROW GROUP BY라고 생각하면 된다.

 

RANK: 일반적인 랭크. (1 2 2 4 처럼)

DENSE_RANK: 동타는 같은 순위 (1 2 2 3 처럼)

ROW_NUMBER: 동타여도 어떻게든 순위를 가른다. (1 2 3 4 처럼)

PERCENT_RANK: PARTITION별 해당 ROW의 등수 PERCENT를 출력한다. (0 0 0.66. 1 처럼)

CUME_DIST: PARTITION별 해당 ROW의 등수 PERCENT를 뒤에서부터 세서 출력한다. (0.33 0.33 0.66 1 처럼)

 

MAX: 윈도우 범위 내에서 최댓값

MIN: 최솟값

SUM: 합계

AVG: 평균

COUNT: 카운트

 

FIRST_VALUE(A): 그룹별 1등의 A의 ROW값을 출력. ROWS UNBOUNDED PRECEDING과 함께 쓰는듯.

LAST_VALUE(A): 그룹별 꼴등 A의 ROW값을 출력. ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING과 함께 쓰는듯.

LAG(C, A, B): 본인보다 A번째 앞에 있는 등수의 C의 ROW값을 출력. 만약 해당 값이 NULL이면 B를 출력.

LEAD(C, A, B): LAG와 동일하나, 뒤에 있는 등수를 가져오는 녀석.

 

RATIO_TO_REPORT: PARTITION별 SUM에서 해당 ROW의 값을 나눈 RATIO를 출력

 

NTILE(N): 파티션별 ROW들을 N등분해줌. (사람 많으면 앞에서부터 할당. EX. 3 3 2)

 

범위 지정

ROW: 행 기준

RANGE: 행의 값으로 범위 기준