【发布时间】:2015-05-03 22:51:26
【问题描述】:
我有一组具有开始值和结束值的“事件”数据。数据可能重叠或端到端对接(结束值或一条记录与另一条记录的开始值匹配)。我想找到一个很好的解决方案来找到事件的“岛屿”,即找到事件发生的跨度。下面的输入和预期输出表应该有助于可视化。
为了增加额外的复杂性,我们可能需要考虑一个容差(即一个事件在 1.15 结束,另一个从 1.2 开始可能被认为是一个连续事件。
我试图通过识别所有开始事件来解决这个问题(那些没有事件从 x 事件结束的地方开始,然后是结束事件。然后根据开始事件的开始值加上下一个结束来构建跨度上面的事件值。
这是行不通的,因为生产数据太“真实”,而且总是存在流程不适合的边缘情况。*
我目前的想法是,实际计算“间隙”然后反转这些间隙以找到连续事件跨度可能是理想的。
*请注意,实际生产数据非常庞大且非常复杂。有数百个事件,其中许多由非常小的片段组成。
【问题讨论】:
-
您使用的是 SQL Server 2012 或更高版本吗? 2012 年对窗口函数进行了很多改进,可能会对您有所帮助。
-
很抱歉,2005 年它仍在运行。
标签: sql sql-server database statistics analysis