Xem ba giai đoạn liền kề trước đó
Các hàm cửa sổ LAG() và LEAD() cho phép bạn lần lượt nhìn lùi hoặc tiến theo thời gian. Nhờ đó, bạn có thể so sánh dữ liệu giữa các kỳ ngay trong một truy vấn đơn giản. Mỗi lần gọi LAG() hoặc LEAD() trả về NULL hoặc một hàng. Nếu bạn muốn xem nhiều kỳ trước đó, hãy gọi LAG() hoặc LEAD() nhiều lần.
Trong bài tập này, chúng ta sẽ so sánh số sự cố an ninh theo ngày cho loại sự cố 1 và 2 trong tháng 7 năm 2019, cụ thể là giai đoạn bắt đầu từ ngày 2/7 đến hết ngày 31/7. Ban quản lý muốn xem cửa sổ cuộn 4 ngày theo từng loại sự cố để phát hiện xu hướng đáng chú ý, bắt đầu từ hai ngày trước và nhìn tới một ngày sau.
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
- Điền SQL để trả về số sự cố của hai kỳ trước.
- Điền SQL để trả về số sự cố của kỳ liền trước.
- Điền SQL để trả về số sự cố của kỳ kế tiếp.
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,
-- Fill in two periods ago
___(ir.___, ___) OVER (
PARTITION BY ir.IncidentTypeID
ORDER BY ir.IncidentDate
) AS Trailing2Day,
-- Fill in one period ago
___(ir.___, ___) OVER (
PARTITION BY ir.IncidentTypeID
ORDER BY ir.IncidentDate
) AS Trailing1Day,
ir.NumberOfIncidents AS CurrentDayIncidents,
-- Fill in next period
___(ir.___, ___) OVER (
PARTITION BY ir.IncidentTypeID
ORDER BY ir.IncidentDate
) AS NextDay
FROM dbo.IncidentRollup ir
WHERE
ir.IncidentDate >= '2019-07-01'
AND ir.IncidentDate <= '2019-07-31'
AND ir.IncidentTypeID IN (1, 2)
ORDER BY
ir.IncidentTypeID,
ir.IncidentDate;