开始使用免费开始使用

构建事件流

在上一个练习中,我们把日间水疗的数据拆分为入场和离场的事件流。对数据进行反透视后,下一步就是为整条事件流排序。

上一个练习的结果现已存放在名为 #StartStopPoints 的临时表中。该表的列包括 CustomerIDTimeUTCEntryCountStartOrdinal这是您在本练习中需要使用的全部列。 TimeUTC 表示事件时间,EntryCount 表示该事件造成的净变化(+1 或 -1),StartOrdinal 仅在入场事件中出现,表示入场的先后顺序。

本练习是课程的一部分

SQL Server 中的时间序列分析

查看课程

练习说明

  • 使用合适的窗口函数(ROW_NUMBER()),按时间顺序创建打卡入场与离场的事件流。
  • 按客户 ID 分区,以便为每位用户分别计算结果。
  • 按事件时间排序,并在出现并列时使用入场顺序值进行裁决。

交互式实操练习

通过完成这段示例代码来试试这个练习。

SELECT s.*,
    -- Build a stream of all check-in and check-out events
	___() OVER (
      -- Break this out by customer ID
      PARTITION BY s.___
      -- Order by event time and then the start ordinal
      -- value (in case of exact time matches)
      ORDER BY s.___, s.___
    ) AS StartOrEndOrdinal
FROM #StartStopPoints s;
编辑并运行代码