데이터베이스/SQL

[SQLD] SQL 활용 (2) - 그룹 함수, 윈도우 함수

qkzkdo 2023. 8. 22. 23:00
728x90

04 그룹 함수

데이터를 GROUP BY 하여 나타낼 수 있는 데이터를 구하는 함수이다.

 

ROLLUP

소그룹 간의 소계 및 총계를 계산하는 함수

ROLLUP(A) A로 그룹핑
총합계
ROLLUP(A, B) A, B로 그룹핑
A로 그룹핑
총합계
ROLLUP(A, B, C) A, B, C로 그룹핑
A, B로 그룹핑
A로 그룹핑
총합계

 

CUBE

소그룹 간의 소계 및 총계를 다차원적으로 계산할 수 있는 함수이다. GROUP BY가 일방향으로 그룹핑하며 소계를 구했다면 CUBE는 조합할 수 있는 모든 그룹에 대한 소계를 집계한다.

CUBE(A) A로 그룹핑
총합계
CUBE(A, B) A, B로 그룹핑
A로 그룹핑
B로 그룹핑
총합계
CUBE(A, B, C) A, B, C로 그룹핑
A, B로 그룹핑
A, C로 그룹핑
B, C로 그룹핑
A로 그룹핑
B로 그룹핑
C로 그룹핑
총합계

 

GROUPING SETS

특정 항목에 대한 소계를 계산하는 함수이다. 인자값으로 ROLLUP이나 CUBE를 사용할 수도 있다.

GROUPING SETS(A, B) A로 그룹핑
B로 그룹핑
GROUPING SETS(A, B, (  )) A로 그룹핑
B로 그룹핑
총합계
GROUPING SETS(A, ROLLUP(B)) A로 그룹핑
B로 그룹핑
총합계
GROUPING SETS(A, ROLLUP(B, C)) A로 그룹핑
B, C로 그룹핑
B로 그룹핑
총합계
GROUPING SETS(A, B, ROLLUP(C)) A로 그룹핑
B로 그룹핑
C로 그룹핑
총합계

 

GROUPING

GROUPING 함수는 ROLLUP, CUBE, GROUPING SETS 등과 함께 쓰이며 소계를 나타내는 Row를 구분할 수 있게 해준다. GROUPING 함수를 이용하면 원하는 우치에 원하는 텍스트를 출력할 수 있다.

 

 

05 윈도우 함수

OVER 키워드와 함께 사용된다.

 

순위 함수

①RANK

순위를 매기면서 같은 순위가 존재하면 존재하는 수만큼 다음 순위를 건너뛴다.

 

②DENSE_RANK

순위를 매기면서 같은 순위가 존재하더라도 다음 순위를 건너뛰지 않고 이어서 매긴다.

 

③ROW_NUMBER

순위를 매기면서 동일한 값이라도 각기 다른 순위를 부여한다.

 

집계함수

①SUM

데이터의 합계를 구하는 함수이다.

 

②MAX

데이터의 최댓값을 구하는 함수이다.

 

③MIN

데이터의 최솟값을 구하는 함수이다.

 

④AVG

데이터의 평균값을 구하는 함수이다.

 

⑤COUNT

데이터의 건수를 구하는 함수이다.

 

행 순서 함수

①FIRST_VALUE

파티션 별 가장 선두에 위치한 데이터를 구하는 함수이다.

 

②LAST_VALUE

파티션 별 가장 끝에 위치한 데이터를 구하는 함수이다.

 

③LAG

파티션 별로 특정 수만큼 앞선 데이터를 구하는 함수이다.

 

④LEAD

파티션 별 특정 수만큼 뒤에 있는 데이터를 구하는 함수이다.

 

비율 함수

①RATIO_TO_REPORT

파티션 별 합계에서 차지하는 비율을 구하는 함수이다.

 

②PERCENT_RANK

해당 파티션의 맨 위 끝 행을 0, 맨 아래 끝 행을 1로 놓고 현재 행이 위치하는 백분위 순위 값을 구하는 함수이다.

 

③CUME_DIST

해당 파티션에서의 누적 백분율을 구하는 함수이다. 결과값은 0보다 크고 1보다 작거나 같은 값을 가진다.

 

④NTILE

주어진 수만큼 행들을 n등분한 후 현재 행에 해당하는 등급을 구하는 함수이다.

 

 

 

출처 : 정미나. 「유선배 SQL개발자(SQLD) 과외노트」. (주)시대교육. 2023

728x90