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

Tạo bản tóm tắt với ROLLUP

Toán tử ROLLUP phát huy hiệu quả nhất khi các thuộc tính không phải chỉ số (non-measure) có cấu trúc phân cấp. Nếu không, bạn có thể nhận được các cấp độ tổng hợp lạ và thiếu trực quan.

Trong tình huống này, chúng ta muốn tổng hợp tổng số sự cố an ninh trong bảng IncidentRollup. Ban quản lý muốn xem dữ liệu được tổng hợp theo tổ hợp của năm dương lịch, quý dương lịch và tháng dương lịch. Ngoài ra, họ cũng muốn thấy các dòng tổng hợp riêng cho năm dương lịch cộng với quý dương lịch, cũng như các dòng tổng hợp riêng cho từng năm dương lịch. Cuối cùng, họ muốn có thêm một dòng cho tổng cộng chung. Tất cả những điều này có thể thực hiện trong một thao tác.

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 định nghĩa cho NumberOfIncidents bằng cách cộng số sự cố trong mỗi phạm vi.
  • Điền phần GROUP BY, bao gồm cả toán tử WITH ROLLUP.

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,
    -- Include the sum of incidents by day over each range
	___(ir.___) AS NumberOfIncidents
FROM dbo.IncidentRollup ir
	INNER JOIN dbo.Calendar c
		ON ir.IncidentDate = c.Date
WHERE
	ir.IncidentTypeID = 2
GROUP BY
	-- GROUP BY needs to include all non-aggregated columns
	c.___,
	c.___,
	c.___
-- Fill in your grouping operator
WITH ___
ORDER BY
	c.CalendarYear,
	c.CalendarQuarterName,
	c.CalendarMonth;
Chỉnh sửa và Chạy Mã