相关疑难解决方法(0)

艾伦在SQL中的Interval Algebra操作

我一直在努力解决SQL中一些棘手的问题,我需要从事件间隔推断出资产利用率,并且刚刚了解了Allen的Interval Algebra,这似乎是解决这些问题的关键.

代数描述了区间之间的13种关系,下面的图像显示了前七个,其余的是逆的(即x之前的y,y遇到x等)

在此输入图像描述

但我很难找到如何实施相关的操作.

根据我的示例数据,如何从SQL或PLSQL中的以下三种类型的操作中获取结果?

  1. 防脱离
  2. 降低
  3. 找到差距

请参阅我的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)

在此输入图像描述


操作1 - 分离结果

我想要一个查询来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)

sql algorithm plsql intervals oracle11g

14
推荐指数
1
解决办法
2091
查看次数

标签 统计

algorithm ×1

intervals ×1

oracle11g ×1

plsql ×1

sql ×1