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

Tính trung bình trượt

Thay vì xem tổng tích lũy từ trước đến nay, ban lãnh đạo muốn thấy trung bình số sự cố trong 7 ngày gần nhất—tức là bắt đầu từ 6 ngày trước và kết thúc ở ngày hiện tại. Vì đây là một khung được chỉ định và thay đổi trong suốt quá trình truy vấn, nên nó được gọi là trung bình trượt.

SQL Server không hỗ trợ xét theo khoảng thời gian trong window function, nên chúng ta sẽ giả định mỗi ngày tương ứng một hàng và dùng mệnh đề ROWS.

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

  • Điền window function phù hợp để tính trung bình trượt bắt đầu từ 6 ngày trước đến hôm nay (hàng hiện tại).
  • Điền khung cửa sổ, bao gồm mệnh đề ROWS, phần "preceding" của khung và phần "following" của khung.

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
	ir.IncidentDate,
	ir.IncidentTypeID,
	ir.NumberOfIncidents,
    -- Fill in the correct window function
	___(ir.NumberOfIncidents) OVER (
		PARTITION BY ir.IncidentTypeID
		ORDER BY ir.IncidentDate
      	-- Fill in the three parts of the window frame
		___ BETWEEN ___ AND ___
	) AS MeanNumberOfIncidents
FROM dbo.IncidentRollup ir
	INNER JOIN dbo.Calendar c
		ON ir.IncidentDate = c.Date
WHERE
	c.CalendarYear = 2019
	AND c.CalendarMonth IN (7, 8)
	AND ir.IncidentTypeID = 1
ORDER BY
	ir.IncidentTypeID,
	ir.IncidentDate;
Chỉnh sửa và Chạy Mã