공부하는 스누피
[정보처리기사] 집계함수, 그룹함수, 윈도함수 본문
집계 함수
- 여러 행 또는 테이블 전체 행으로부터 하나의 결괏값을 반환하는 함수이다.
COUNT - 행 수
SUM - 합계
AVG - 평균
MAX - 최댓값
MIN - 최솟값
STDDEV - 표준편차
VARIAN - 분산
그룹 함수
- 테이블의 전체 행을 컬럼 값에 따라 그룹화하여 그룹별로 결과를 출력하는 함수이다.
ROLLUP
- 그룹별 중간 집계값을 생성한다.
- 집계 대상을 ROLLUP 뒤에 넣는다.
- 함수 인자로 지정된 컬럼의 순서에 따라 계층별로 구성된다. -> 순서 바뀌면 출력 내용도 달라진다.
- 계층 내 정렬이 가능하다.
-- A와 B의 C 총합 계산
select A, B, sum(c)
from T
group by rollup(A, B);
CUBE
- 결합 가능한 값에 대한 다차원 집계 함수
- 연산이 많아 시스템에 부담을 준다.
-- A, B의 모든 조합에 대한 C 총합 계산
select A, B, sum(C)
from T
group by cube(A, B);
GROUPING SETS
- 개별 집계 구하기.
- 컬럼간 순서와 무관한 결과가 나온다. -> 계층 구조 x
- order by를 사용하여 집계 대상 그룹의 순서를 조정할 수 있다.
-- A를 기준으로 한 집계 결과와 B를 기준으로 한 집계 결과를 분리해서 계산
select A, B, sum(C)
from T
group by grouping sets(A, B);
윈도 함수(OLAP 함수)
-> 온라인 데이터 분석 처리 용도로 사용한다.
순위함수
- 레코드의 순위를 계산한다.
RANK - 동일 순위 존재시 후순위 넘어감 (1, 2, 2, 4)
DENSE_RANK - 동일 순위 존재시 후순위를 넘어가지 않음 (1, 2, 2, 3)
ROW_NUMBER - 동일 순위 존재해도 연속된 번호 부여 (1, 2, 3, 4)
select A, B
rank() over (order by B desc)
from T;
행순서함수
- 레코드에서 가장 먼저 나오거나 나중에 나온 값, 이전/이후 row의 값을 출력한다.
FIRST_VALUE - 파티션별 윈도에서 가장 먼저 나오는 값을 찾음(MIN과 동일결과)
LAST_VALUE - 가장 늦게 나오는 값을 찾음(MAX와 동일결과)
LAG - 이전 row의 값 반환
LEAD - 이후 row의 값 반환
select A, B,
first_value(A) over (order by B desc)
from T;
비율함수
RATIO_TO_REPORT - 주어진 그룹에 대한 합을 기준으로 각 row의 상대적 비율 반환
PERCENT_RANK - 주어진 그룹에 대해 제일 먼저 나오는 값을 0으로, 나중 값을 1로 하여 순서별 백분율을 구하는 함수.
select A, B,
ratio_to_report(A) over (order by B desc)
from T;
'CS > 데이터베이스' 카테고리의 다른 글
[MySQL] SELECT할 때 자주 쓰는 기능 모음 (0) | 2021.03.11 |
---|---|
[MySQL] 자주 쓰이는 명령어 정리 (0) | 2020.12.16 |
[정보처리기사] 데이터 입출력 구현 정리 (0) | 2020.11.26 |