開始使用免費開始

計算事故之間經過的天數

你可能在前兩個練習中注意到,並不是每週的每天都有事故發生,因此把 LAG()LEAD() 視為「前一天」有點誤導;更精確地說應該是「前一個期間」。管理階層也注意到了這點,並在 7 月底想知道每次事故之間相隔幾天。為了回答這個問題,我們將計算兩個值:距離前一次事故已經過了多少天,以及距離下一次事故還有多少天。

回想一下,DATEDIFF() 會給出兩個日期之間的差值。我們可以把它與 LAG()LEAD() 結合,得到所需的結果。

本練習屬於課程

SQL Server 的時間序列分析

檢視課程

練習說明

  • DATEDIFF() 搭配 LAG()LEAD(),計算自上次事故以來的天數。
  • DATEDIFF() 搭配 LAG()LEAD(),計算距離下一次事故的天數。
  • 注意:本練習不需要使用 NumberOfIncidents 欄位。

動手互動練習

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

SELECT
	ir.IncidentDate,
	ir.IncidentTypeID,
    -- Fill in the days since last incident
	___(DAY, ___(ir.IncidentDate, 1) OVER (
		PARTITION BY ir.IncidentTypeID
		ORDER BY ir.IncidentDate
	), ir.___) AS DaysSinceLastIncident,
    -- Fill in the days until next incident
	___(DAY, ir.___, ___(ir.IncidentDate, 1) OVER (
		PARTITION BY ir.IncidentTypeID
		ORDER BY ir.IncidentDate
	)) AS DaysUntilNextIncident
FROM dbo.IncidentRollup ir
WHERE
	ir.IncidentDate >= '2019-07-02'
	AND ir.IncidentDate <= '2019-07-31'
	AND ir.IncidentTypeID IN (1, 2)
ORDER BY
	ir.IncidentTypeID,
	ir.IncidentDate;
編輯並執行程式碼