GROUPING SETS로 사용자 지정 그룹 만들기
GROUPING SETS 연산자를 사용하면 원하는 집계 수준을 정확히 지정할 수 있어요.
이번 시나리오에서 경영진은 ROLLUP과 비슷하지만 정보가 너무 많지 않은 결과를 원해요. 계층의 모든 집계 수준을 모두 보여 주는 대신, 세 가지 수준만 보고자 해요: 전체 합계, 연도별, 그리고 연도-분기-월별이에요.
이 연습은 강의의 일부입니다
SQL Server에서의 시계열 분석
연습 안내
GROUP BY구문을GROUPING SETS로 작성하세요. 다음을 보고자 합니다:- 연도, 분기, 월의 각 조합마다 한 행(해당 계층 순서)
- 연도마다 한 행
- 전체 합계에 해당하는 한 행(즉, 공백 그룹)
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
SELECT
c.CalendarYear,
c.CalendarQuarterName,
c.CalendarMonth,
SUM(ir.NumberOfIncidents) AS NumberOfIncidents
FROM dbo.IncidentRollup ir
INNER JOIN dbo.Calendar c
ON ir.IncidentDate = c.Date
WHERE
ir.IncidentTypeID = 2
-- Fill in your grouping operator here
GROUP BY ___ ___
(
-- Group in hierarchical order: calendar year,
-- calendar quarter name, calendar month
(___, ___, ___),
-- Group by calendar year
(___),
-- This remains blank; it gives us the grand total
()
)
ORDER BY
c.CalendarYear,
c.CalendarQuarterName,
c.CalendarMonth;