开始使用免费开始使用

查看前三个区间

LAG()LEAD() 窗口函数分别让我们能够向过去或将来查看数据。这样就可以用一条简单的查询来比较相邻区间的数据。每次调用 LAG()LEAD() 会返回 NULL 或单行结果。若要查看更久之前或之后的多个区间,可以多次调用 LAG()LEAD()

在本练习中,我们要比较 2019 年 7 月期间(具体为 7 月 2 日到 7 月 31 日)事件类型 1 和 2 的每日安全事件数量。管理层希望按事件类型查看一个滚动 4 天的窗口,以识别是否存在显著趋势:从前推 2 天开始,并向前看 1 天。

本练习是课程的一部分

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;
编辑并运行代码