【问题标题】:interval overlapping in tsqlsql中的间隔重叠
【发布时间】:2010-03-27 04:23:09
【问题描述】:

我需要得到分割间隔和重叠间隔的数量,例如

基础数据:

interval A: startTime 08:00, endTime 12:00
interval B: startTime 09:00, endTime 12:00
interval C: startTime 12:00, endTime 16:00
interval D: startTime 13:00, endTime 14:00

现在我有一个从 10:00 到 15:00 的单独时间间隔,并且必须首先确定哪些时间间隔相交。结果应该是这样的:

1: 10:00 - 12:00 ( intersecting with interval A )
2: 10:00 - 12:00 ( intersecting with interval B )
3: 12:00 - 15:00 ( intersecting with interval C )
4: 13:00 - 14:00 ( intersecting with interval D )

这部分工作正常,以下导致问题:

我需要对并行间隔进行某种加权。这也意味着,如果区间交点(部分)与另一个交点相交,则可能会发生必须将区间交点拆分 n 次的情况。

在上面的例子中,预期的结果是:

1: 10:00 - 12:00 -> weightage: 50%
2: 10:00 - 12:00 -> weightage: 50%

3.1: 12:00 - 13:00 -> weightage: 1oo%
3.2: 13:00 - 14:00 -> weightage: 50%
3.3: 14:00 - 15:00 -> weightage: 50%

4: 13:00 - 14:00 -< weightage: 100%

区间 3 的分裂是由于 13:00 到 14:00 与区间 4 相交造成的。

sql-server 是 ms-sql 2008。

提前感谢您的帮助!

【问题讨论】:

    标签: tsql sql-server-2008 time intervals intersect


    【解决方案1】:

    如果我理解您正在尝试正确执行的操作,您的预期结果不应该是

    1: 10:00 - 12:00 -> weightage: 50%
    2: 10:00 - 12:00 -> weightage: 50%
    
    3.1: 12:00 - 13:00 -> weightage: 1oo%
    3.2: 13:00 - 14:00 -> weightage: 50%
    3.3: 14:00 - 15:00 -> weightage: 50%
    
    4: 13:00 - 14:00 -< weightage: 50%
    

    因为 13:00-14:00 使用了两次?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 2017-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多