공부하는 스누피

[정보처리기사] 집계함수, 그룹함수, 윈도함수 본문

CS/데이터베이스

[정보처리기사] 집계함수, 그룹함수, 윈도함수

커피맛스누피 2020. 11. 9. 22:47

집계 함수

- 여러 행 또는 테이블 전체 행으로부터 하나의 결괏값을 반환하는 함수이다. 

 

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;

 

Comments