데이터에 대한 집계는 GROUP BY라는 구문을 사용한다. 하지만 GROUP BY는 그룹화할 칼럼에 대한 집계만 이루어진다. 하지만 각 칼럼별 집계된 값에 대한 총합이 필요한 경우 WITH ROLLUP문을 사용하여 원하는 데이터를 조회할 수 있다.
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 구문을 사용하면, 위와 같이 집계된 값에 대한 총합을 구할 수 있다.
'RDBS > MYSQL' 카테고리의 다른 글
[MySQL]GROUP_CONCAT을 활용하여 그룹 별 데이터 나열하기 (6) | 2023.07.11 |
---|---|
[MySQL]동시성 문제를 해결할 FOR UPDATE 알아보기 (1) | 2023.07.09 |
[MySQL]트랜잭션(Trasaction) 예제로 간단하게 이해하기 (0) | 2023.07.02 |
[MySQL]문자열의 대소문자를 변경하는 방법(UPPER, LOWER함수) (4) | 2023.06.25 |
[MySQL]WITH문을 사용하여 가상의 테이블을 만들어 사용하기 (3) | 2023.06.25 |