티스토리 뷰

자격증/SQLD

SQLD - SQL 활용 [그룹 함수]

나는연어다 2017. 8. 16. 10:29

1.   데이터 분석 개요

-       ANSI/ISO SQL 표준은 데이터 분석을 위해서 다음 세 가지 함수를 정의한다.

n  AGGREGATE FUNCTION

n  GROUP FUNCTION

n  WINDOW FUNCTION

 

-       AGGREGATE FUNCTION

n  GROUP AGGREGATE FUNCTION이라고도 부르며, GROUP FUNCTION의 한 부분으로 분류할 수 있다.

n  COUNT, SUM, AVG, MAX, MIN 외 각종 집계 함수들이 포함되어 있다.

 

-       GROUP FUNCTION

n  ROLLUP GROUP BY의 확장된 형태로 사용하기가 쉬우며 병렬로 수행이 가능하기 때문에 매우 효과적일 뿐 아니라 시간 및 지역처럼 계층적 분류를 포함하고 있는 데이터의 집계에 적합하도록 되어있다.

n  CUBE는 결합 가능한 모든 값에 대하여 다차원적인 집계를 생성하게 되므로 ROLLUP에 비해 다양한 데이터를 얻는 장점이 있는 반면에, 시스템에 부하를 많이 주는 단점이 있다.

n  GROUPING SETS는 원하는 부분의 소계만 손쉽게 추출할 수 있는 장점이 있다.

n  ROLLUP, CUBE, GROUPING SETS 결과에 대한 정렬이 필요한 경우는 ORDER BY절에정렬 칼럼을 명시해야한다,

-       WINDOW FUNCTION

 

2.   ROLLUP 함수

-       ROLLUP에 저장된 Grouping Columns List Subtotal을 생성하기 위해 사용되어지며 Grouping Columns의 수를 N이라고 했을 때 N+1 Level Subtotal이 생성된다.

-       ROLLUP의 인수는 계층 구조이므로 인수 순서가 바뀌면 수행 결과도 바뀌게 되므로 인수의 순서에도 주의해야한다.

 

3.   CUBE 함수

-       ROLLUP에서는 단지 가능한 Subtotal만을 생성하였지만, CUBE는 결합 가능한 모든 값에 대하여 다차원 집계를 생성한다.

-       CUBE를 사용할 경우에는 내부적으로는 Grouping Columns의 순서를 바꾸어서 또 한번의 Query를 추가 수행해야 한다.

-       뿐만 아니라 Grand Total은 양쪽의 Query에서 모두 생성이 되므로 한 번의 Query에서는 제거되어야만 하므로 ROLLUP에 비해 시스템의 연산 대상이 많다.

-       이처럼 Grouping Columns이 가질 수 있는 모든 경우에 대하여 Subtotal을 생성하는 경우에는 CUBE를 사용하는 것이 바람직하나, ROLLUP에 비해 시스템에 많은 부담을 주므로 사용에 주의해야 한다. CUBE 함수의 경우 표시된 인수들에 대한 계층별 집계를 구할 수 있으며, 이때 표시된 인수들 간에는 계층 구조인 ROLLUP과 달리 평등한 관계이므로 인수의 순서가 바뀌는 경우 행간에 정렬순서는 바뀔 수 있어도 데이터 결과는 같다.

 

4.   GROUPING SETS 함수

-       GROUPING SETS를 이용해 더욱 다양한 소계 집합을 만들 수 있는데, GROUPBY SQL 문장을 여러 번 반복하지 않아도 원하는 결과를 쉽게 얻을 수 있게 되었다. GROUPING SETS에 표시된 인수들에 대한 개별 집계를 구할 수 있으며, 이때 표시된 인수들 간에는 계층 구조인 ROLLUP과는 달리 평등한 관계이므로 인수의 순서가 바뀌어도 결과는 같다.
그리고 GROUPING SETS 함수도 결과에 대한 정렬이 필요한 경우는 ORDER BY 절에 명시적으로 정렬 칼럼이 표시가 되어야 한다.

반응형
LIST

'자격증 > SQLD' 카테고리의 다른 글

SQLD - SQL 활용 [DCL]  (0) 2017.08.16
SQLD - SQL 활용 [윈도우 함수]  (0) 2017.08.16
SQLD - SQL 활용 [서브쿼리]  (0) 2017.08.14
SQLD - SQL 활용 [계층형 질의와 셀프 조인]  (0) 2017.08.14
SQLD - SQL 활용 [집합 연산자]  (0) 2017.08.14
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함