CREATE TABLE 월별매출
( 상품ID VARCHAR (10) NOT NULL,
월 VARCHAR (10) NOT NULL,
매출액 NUMBER NOT NULL);
INSERT INTO 월별매출 (상품ID, 월, 매출액)
VALUES ('P001', 2025.02, 7000);
INSERT INTO 월별매출 (상품ID, 월, 매출액)
VALUES ('P001', 2025.02, 13000);
INSERT INTO 월별매출 (상품ID, 월, 매출액)
VALUES ('P002', 2025.02, 10000);
INSERT INTO 월별매출 (상품ID, 월, 매출액)
VALUES ('P002', 2025.02, 11000);
INSERT INTO 월별매출 (상품ID, 월, 매출액)
VALUES ('P003', 2025.02, 9000);
INSERT INTO 월별매출 (상품ID, 월, 매출액)
VALUES ('P003', 2025.02, 10000);
INSERT INTO 월별매출 (상품ID, 월, 매출액)
VALUES ('P001', 2025.03, 25000);
INSERT INTO 월별매출 (상품ID, 월, 매출액)
VALUES ('P002', 2025.03, 20000);
INSERT INTO 월별매출 (상품ID, 월, 매출액)
VALUES ('P003', 2025.03, 23000);
SELECT 상품ID, 월, SUM(매출액) AS 매출액
FROM 월별매출
GROUP BY 상품ID, 월;
소그룹간의 합계를 계산하는 함수로, ROLLUP을 사용하면 GROUP BY로 묶은 각각의 소그룹 합계와 전체 합계를 모두 구할 수 있다.
SELECT 상품ID, 월, SUM(매출액) AS 매출액
FROM 월별매출
GROUP BY ROLLUP(상품ID, 월);
GROUP BY ROLLUP(컬럼1, 컬럼2)
=
GROUP BY 컬럼1, 컬럼2
UNION ALL
GROUP BY 컬럼1
UNION ALL
모든 집합 그룹 결과
항목들 간의 다차원적인 소계를 계산한다. ROLLUP과 달리 GROUP BY절에 명시한 모든 컬럼에 대해 소그룹 합계를 계산한다.
SELECT 상품ID, 월, SUM(매출액) AS 매출액
FROM 월별매출
GROUP BY CUBE(상품ID, 월);
GROUP BY CUBE(컬럼1, 컬럼2)
=
GROUP BY 컬럼1, 컬럼2
UNION ALL
GROUP BY 컬럼1
UNION ALL
GROUP BY 컬럼2
UNION ALL
모든 집합 그룹 결과
특정 항목에 대한 소계를 계산하는 함수이다.
SELECT 상품ID, 월, SUM(매출액) AS 매출액
FROM 월별매출
GROUP BY GROUPING SETS(상품ID, 월);
SELECT 상품ID, 월, SUM(매출액) AS 매출액
FROM 월별매출
GROUP BY 상품ID
UNION ALL
SELECT 상품ID, 월, SUM(매출액) AS 매출액
FROM 월별매출
GROUP BY 월;
직접적으로 그룹별 집계를 구하는 함수는 아니지만 위의 집계함수들을 지원하는 함수이다.
집계가 계산된 결과에 대해서는 1 값을 갖고, 그렇지 않은 결과에 대해서는 0 값을 가진다.
SELECT
CASE GROUPING(상품ID) WHEN 1 THEN '모든 상품ID' ELSE 상품ID END AS 상품ID,
CASE GROUPING(월) WHEN 1 THEN '모든 월' ELSE 월 END AS 월,
SUM(매출액) AS 매출액
FROM 월별매출
GROUP BY ROLLUP(상품ID, 월);