본문 바로가기

Study/데이터 베이스

[DBMS 강의 - 12] 집계 연산자

ROLLUP 연산자

- GROUP BY 절의 일부로 사용되어, 집계 값을 요약하는데 사용된다.

- 사용 구문은 다음과 같다.

GROUP BY ROLLUP  (  simple_group_by_item [ , ...n ] )

- simple_group_by_item : 단순 GROUP BY 집계 행뿐만 아니라, 우측에서 좌측으로 집계 값들을 요약한 추가적인 행을 만들어 준다.

- ROLLUP으로 요약된 행의 해당 열 값은 NULL이 된다.

- 순서는 ROLLUP 결과와 결과 집합의 행 수에 영향을 미친다.

 

- 개념도는 다음과 같다.

 

 

위의 개념도를 쿼리를 이용하여 구현하면 다음과 같다.

 

simple_group_by_item 들인 buyer_id, product_id에 대해 우측(product_id)에서 좌측(buyer_id) 순으로 집계 값들을 요약한

추가적인 행들 (1 NULL 695, 2 NULL 670, NULL NULL 1365)을 만들어 준다.

"1 NULL 695" 값을 가지는 행은 buyer_id 값이 1인 모든 product_id 열들에 대해 요약한 것이고,

"2 NULL 670" 값을 가지는 행은 buyer_id 값이 2인 모든 product_id 열들에 대해 요약한 것이며,

"NULL NULL 1365" 값을 가지는 행은 모든 buyer_id와 product_id 열들에 대해 요약한 것이다. (즉, 전체 행들에 대한 요약)

 

 

 

 

 

 

CUBE 연산자

- ROLLUP 연산자와 비슷하지만 더욱 완전하게 요약해준다.

- 사용 구문은 다음과 같다.

GROUP BY CUBE  ( simple_group_by_item [ , ...n]  )

- simple_group_by_item : 단순 GROUP BY 집계 행과 ROLLUP 요약 행외에 교차 집계 행을 만들어준다.

- CUBE로 요약된 행의 해당 열 값은 NULL이 된다.

 

- 개념도는 다음과 같다.

 

 

위의 개념도를 쿼리를 이용하여 구현하면 다음과 같다.

 

 

"NULL 1 95" 행은 product_id 값이 1인 모든 buyer_id 열들에 대해 요약한 것이고,

"NULL 2 670" 행은 product_id 값인 2인 모든 buyer_id 열들에 대해 요약한 것이며,

"NULL 3 600" 행은 product_id 값이 3인 모든 buyer_id 열들에 대해 요약한 것이다.