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 열들에 대해 요약한 것이다.
'Study > 데이터 베이스' 카테고리의 다른 글
[DBMS 강의 - 14] 데이터 수정 (UPDATE, DELETE) (0) | 2014.04.28 |
---|---|
[DBMS 강의 - 13] 데이터 삽입 (INSERT) (0) | 2014.04.28 |
[DBMS 강의 - 11] GROUP BY / HAVING (0) | 2014.04.27 |
[DBMS 강의 - 10] 함수 (0) | 2014.04.27 |
[DBMS 강의 - 09] 유니온 (0) | 2014.04.22 |