Tạo nhóm tùy chỉnh với GROUPING SETS
Toán tử GROUPING SETS cho phép bạn xác định chính xác các cấp độ tổng hợp mong muốn.
Trong tình huống này, ban quản lý muốn xem thứ gì đó tương tự ROLLUP nhưng ít thông tin hơn. Thay vì hiển thị mọi cấp độ tổng hợp trong hệ phân cấp, ban quản lý muốn thấy ba cấp độ: tổng cộng chung; theo năm; và theo năm, quý, và tháng.
Bài tập này là một phần của khóa học
Phân tích chuỗi thời gian trong SQL Server
Hướng dẫn bài tập
- Hoàn thiện phần
GROUP BYbằng cách dùngGROUPING SETS. Chúng ta muốn thấy: - Một dòng cho mỗi tổ hợp năm, quý và tháng (theo thứ tự phân cấp đó)
- Một dòng cho mỗi năm
- Một dòng tổng cộng chung (tức là một nhóm trống)
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
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;