開始使用免費開始

檢視前三個期間

LAG()LEAD() 視窗函式分別能讓我們向時間的後方或前方觀察。這讓我們可以用一個簡潔的查詢,比較相鄰期間的資料。每次呼叫 LAG()LEAD() 都會回傳 NULL 或單一列。如果你想同時看到多個過去期間,可以多次呼叫 LAG()LEAD()

在這個練習中,你要比較 2019 年 7 月間,事件型別 1 與 2 的每日資安事件數量,範圍從 7 月 2 日到 7 月 31 日。管理階層希望依事件型別查看一個滾動的 4 天視窗,以判斷是否有明顯趨勢:從前兩天開始,並往前看一天。

本練習屬於課程

SQL Server 的時間序列分析

檢視課程

練習說明

  • 填入 SQL,回傳往前兩個期間的事件數量。
  • 填入 SQL,回傳上一個期間的事件數量。
  • 填入 SQL,回傳下一個期間的事件數量。

動手互動練習

試著完成這個範例程式碼,體驗一下這個練習。

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;
編輯並執行程式碼