Bắt đầu ngayBắt đầu miễn phí

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

Xem khóa học

Hướng dẫn bài tập

  • Hoàn thiện phần GROUP BY bằng cách dùng GROUPING 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;
Chỉnh sửa và Chạy Mã