[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 열들에 대해 요약한 것이다.