그룹함수: 그룹별로 소계를 내주는 함수
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: 행의 값으로 범위 기준
'3-1 > 데이터베이스 (실습)' 카테고리의 다른 글
[데이터베이스 실습] 10. TCL, DCL (0) | 2023.06.09 |
---|---|
[데이터베이스 실습] 7. 집합 연산자와 계층형 질의 (0) | 2023.06.08 |
[데이터베이스 실습] 3. 함수 (0) | 2023.06.08 |
[데이터베이스 실습] DDL (0) | 2023.03.20 |
[데이터베이스 실습] 1. Oracle Database 및 Oracle SQL Developer 설치 (0) | 2023.03.08 |