Database/SQL Server

SQL Server - 소계, 합계[롤업, 큐브] Rollup, Cube

청렴결백한 만능 재주꾼 2020. 12. 15. 06:56
반응형

 

ROLLUP이 쓰이는 예제를 보면서 이해하자.

아래의 예시 쿼리는 모두다 같은 결과를 나타낸다

--1
SELECT Country, SUM(Salary) as TotalSalary
FROM Employees
GROUP BY ROLLUP(Country)


--2
SELECT Country, SUM(Salary) as TotalSalary
FROM Employees
GROUP BY Country with ROLLUP


--3
SELECT Country, SUM(Salary) as TotalSalary
FROM Employees
GROUP BY Country

UNION ALL

SELECT NULL, SUM(Salary) as TotalSalary
FROM Employees

--4 바로 전에 배운 GROUPING SETS
SELECT Country, SUM(Salary) as TotalSalary
FROM Employees
GROUP BY GROUPING SETS
(
	(COUNTRY),
    ()
)

 

Rollup Result

 

 

 


Cube 

아래의 3가지 statement도 다 같은 결과를 리턴한다. 롤업(ROLLUP)은 지정한 것에 대한 소계를 하는 것이고 CUBE는 묶을 수 있는대로 다 묶어서 다 소계를 내서 리턴한다. 만약 나라와 성별을 밑에처럼 큐브했다면 나라별 합계, 성별 별 합계의 경우의 수 모두 계산하여 리턴함.

--1 
Select Country, Gender, SUM(Salary) as TotalSalary
from Employees
Group By Cube(Country, Gender)

--2
Select Country, Gender, SUM(Salary) as TotalSalary
from Employees
Group By Country, Gender with Cube

--3
Select Country, Gender, SUM(Salary) as TotalSalary
from Employees
Group By
	GROUPING SETS
    (
    	(Country, Gender),
        (Country),
        (Gender),
        ()
    )

CUBE와 ROLLUP의 차이

롤업은 지정된 것에 대한 소계를 리턴해주는 것이고 큐브는 가능한 모든 것에 대해 소계를 한다.

 

반응형