开始使用免费开始使用

计算事件之间经过的天数

在前两个练习中,您可能已经注意到并不是每周的每一天都有事件发生,所以把 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;
编辑并运行代码