在一年的滚动 7 天窗口内出现 X 的第一个实例



我试图找到客户在滚动 7 天窗口内遇到错误的第一个实例。我计划使用它来查看客户在接下来的几天内的行为,例如他们是否下订单,或者他们是否在返回现场之前有很长一段时间。

因此,我希望得到的是一个包含以下内容的表格:

Customer, Date, ReceiptID
Jack, 07/05/2018 , 223A        

这是 7 天窗口内的第一次。然后他在 09/05/2018 再次遇到该错误,我们不计算在内,因为它是在第一个错误后的 7 天内。

然后他在 18/08/2018 上遇到了一个错误,我想将其包含在我的结果中。

考虑到客户理论上可能在 7 天内遇到 30 多个错误,是否可以简单地在 SQL Server 中执行此操作?

您可以使用

lag()获取来自上一个报告的 7+ 天的报告:

select b.*
from (select b.*,
             lag(date) over (partition by customer order by date) as prev_date
      from bugs b
     ) b
where prev_date is null or prev_date < dateadd(day, -7, date);

请注意,如果您有诸如 1-6-12-18-24 之类的序列,则这将计为一个"7 天"时间段,因为这些报告没有更大的间隔。

相关内容

  • 没有找到相关文章

最新更新