RDBS/MYSQL

[MySQL]WITH ROLLUP(그룹 소계 함수)와 GROUP BY와 비교하기

MoonSta 2023. 7. 4. 10:48

 데이터에 대한 집계는 GROUP BY라는 구문을 사용한다. 하지만 GROUP BY는 그룹화할 칼럼에 대한 집계만 이루어진다. 하지만 각 칼럼별 집계된 값에 대한 총합이 필요한 경우 WITH ROLLUP문을 사용하여 원하는 데이터를 조회할 수 있다.

 

 

 

[MySQL]그룹화 하고 조건 부여하기(Group By절, Having절)

📌그룹화 하고 조건 부여하기(Group By절, Having절) 실무에서 가장 많이 사용되고, 가장 이해하기 어려운 GROUP BY에 대해 알아보도록 하겠습니다. 이 구문은 실제 데이터를 조회하면서 데이터를 집

mooonstar.tistory.com

 


 

WITH ROLLUP 구문 

 

SELECT SUM(COST)
  FROM PRICE
 GROUP BY COST
 WITH ROLLUP;

 

기본적인 문법은 GROUP BY와 유사하다. 다만 마지막에 WITH ROLLUP문을 붙여쓰기만 하면 된다. 예제를 보며 확인해 보도록 하자.

 


 

WITH ROLLUP 예제

 

NAME COST 
COMPUTER  1,000,000
PHONE 700,000
SMART WATCH 300,000
SMART WATCH 350,000

 

 위와 같은 상품을 구매한 테이블이 있다고 하자. 이런 경우에 GROUP BY를 사용하여 상품별 가격을 합한 쿼리는 다음과 같다.

 

SELECT NAME
     , SUM(PRICE)
   FROM HISTORY
  GROUP BY PRICE;

 

 

NAME COST 
COMPUTER  1,000,000
PHONE 700,000
SMART WATCH 650,000

 

이제 WITH ROLLUP 구문을 사용하여, 집계된 값에 대한 총합을 구해보도록 하자.

 

SELECT NAME
     , SUM(PRICE)
   FROM HISTORY
  GROUP BY PRICE
  WITH ROLLUP;

 

NAME COST 
COMPUTER  1,000,000
PHONE 700,000
SMART WATCH 650,000
NULL 2,350,000

 

WITH ROLLUP 구문을 사용하면, 위와 같이 집계된 값에 대한 총합을 구할 수 있다.