오늘은 group by를 이용하여 도출된 값을 좀 더 응용해보고자 한다.
1. rollup이란
group by 절의 그룹 조건에 따라 전체 행을 그룹화하고 그 데이터의 총합계를 구하는 rollup이라는 것이 있다.
2. 예제
예제를 살펴보자.
예제 1)
SELECT p_category, SUM(p_price) FROM tb_product GROUP BY p_category
[그림 1]
tb_product라는 상품테이블을 카테고리별로 그룹화하였다.
또한 SUM이라는 집계함수를 이용하여 카테고리 별로 판매 가격의 합계를 구하였다.
이제 rollup을 이용하여 이 테이블의 총합계를 구해보자 .
SELECT p_category, SUM(p_price) FROM tb_product GROUP BY p_category WITH ROLLUP
뒤에 WITH ROLLUP을 붙여주면 해당 테이블의 총합계를 구할 수 있다. ( 이것은 MYSQL 기준이다. )
[그림 2]
예제 2)
위에 간단한 예제로 rollup에 대해 설명했으니 이번엔 조금 어려운 예제로 접근해보자 .
상품테이블과 구매테이블을 조인하여 상품 판매한 금액과 판매 갯수를 구하려고 한다.
SELECT pro.p_category,
buy.p_code AS code ,
SUM(buy.buy_total) AS SUM,
COUNT(buy.p_code) AS COUNT
FROM tb_product pro
JOIN asso_buy buy
ON buy.p_code = pro.p_code
GROUP BY pro.p_category,
buy.p_code WITH ROLLUP
[그림 3]
예제 3)
예제 2와 유사한 예제이다.
SELECT bid.tb_auction_auc_code1,
auc.auc_model,
COUNT(bid.tb_auction_auc_code1) AS cct,
AVG(bid.max_bid_price) AS average
FROM tb_auction auc , asso_bid bid
WHERE auc.auc_code=bid.tb_auction_auc_code1
GROUP BY bid.tb_auction_auc_code1 WITH ROLLUP
[그림 4]
'컴퓨터 공부 > Database' 카테고리의 다른 글
[Database] Oracle 11g 설치방법 (0) | 2013.04.25 |
---|---|
[Database] Mysql의 타입 종류 (3) | 2013.04.04 |
[Database] MYSQL 조인 insert, update, delete (0) | 2013.02.12 |
[Database] mysql explain 이해 (6) | 2012.12.27 |
[Database] Groupby에 대해서 알아보자 (0) | 2012.12.22 |