我一直在努力解决SQL中一些棘手的问题,我需要从事件间隔推断出资产利用率,并且刚刚了解了Allen的Interval Algebra,这似乎是解决这些问题的关键.
代数描述了区间之间的13种关系,下面的图像显示了前七个,其余的是逆的(即x之前的y,y遇到x等)

但我很难找到如何实施相关的操作.
根据我的示例数据,如何从SQL或PLSQL中的以下三种类型的操作中获取结果?
请参阅我的SQLFiddle链接:http://sqlfiddle.com/#!4/cf0cc
start end width
[1] 1 12 12
[2] 8 13 6
[3] 14 19 6
[4] 15 29 15
[5] 19 24 6
[6] 34 35 2
[7] 40 46 7
Run Code Online (Sandbox Code Playgroud)

我想要一个查询来disjoint set从上面的数据中返回,其中所有重叠的间隔都被分成行,这样就不存在重叠.
我该如何处理这个SQL?
start end width
[1] 1 7 7
[2] 8 12 5
[3] 13 13 1
[4] 14 14 1
[5] 15 18 4
[6] 19 19 1 …Run Code Online (Sandbox Code Playgroud)