반응형
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),
()
)
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의 차이
롤업은 지정된 것에 대한 소계를 리턴해주는 것이고 큐브는 가능한 모든 것에 대해 소계를 한다.
반응형
'Database > SQL Server' 카테고리의 다른 글
SQL Server - 디버깅 Debugging (0) | 2020.12.16 |
---|---|
SQL Server - 그룹핑, 그룹핑_아이디 GROUPING, GROUPING_ID (0) | 2020.12.16 |
SQL Server - 무작위 날짜 데이터 생성 후 비어있는 날 채우기 Create a table with random date then Group by Date with no exception (0) | 2020.12.15 |
SQL Server - DATEDIFF() Function (0) | 2020.12.15 |
SQL Server - Grouping Sets 함수 Grouping Sets in SQL Server (0) | 2020.12.15 |