DB/MySQL
[MySQL] WITH ROLLUP을 활용한 그룹별 중간 집계 산출법
Ray123
2024. 3. 3. 16:14
다음과 같은 테이블이 있다고 하자.
SALES_HISTORY 테이블은 특정 상품들과 해당 상품들이 판매된 시간, 판매된 가격 정보를 가진다.
1. GROUP BY를 통한 집계
GROUP BY를 통해 특정 컬럼(들)을 기준으로 그룹핑한 다음 집계함수를 활용한 합이나 평균값의 산출이 가능하다. 본 글에서는 SUM을 활용한 상품들의 일자별 매출액을 조회하는 상황을 가정한다.
SELECT
PRODUCT_ID,
DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DAY,
SUM(PRICE) AS TOTAL_SALES
FROM
SALES_HISTORY
GROUP BY
PRODUCT_ID, SALES_DAY;
2. WITH ROLLUP을 가미한 집계
WITH ROLLUP을 가미하면, GROUP BY로 보여지는 결과물 뿐만 아니라 그룹핑한 각각의 소그룹별 집계와 전체 집계를 볼 수 있다.
SELECT
PRODUCT_ID,
DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DAY,
SUM(PRICE) AS TOTAL_SALES
FROM
SALES_HISTORY
GROUP BY
PRODUCT_ID, SALES_DAY WITH ROLLUP;
NULL값으로 표기된 부분들이 WITH ROLLUP을 통해 산출된 집계값이다. 1000번 상품 그룹에 대한 집계와 1001번 상품에 대한 집계, 1002번 상품에 대한 집계와 더불어 전체 집계 또한 나온 것을 확인할 수 있다.