【问题】
请教一个问题:
如果我通过sql查询能检索出来多条时间段,我怎么快速计算出来时间。
举例:
我的检索结果:
2014-9-1 10:00 2014-9-2 11:30
2014-9-1 10:30 2014-9-2 11:00
2014-9-3 11:00 2014-9-4 12:00
由于第二段时间包含在第一段时间之内,所以程序要检测出来,同时只用第一段时间的和+第三段时间的和(第三段时间是独立的)]
【回答】
Oracle下可以借助递归查询(connect by)语句,但由于集合无序,这个语句还是挺难想明白的,而且需求再复杂些就更难写了(比如把重复时间段聚合等)。这种数据量不大的情况下,SPL要灵活简单一些,下面给出几种实现写法:
| A | |
| 1 | $select * from SHIP_BERTH order by S |
| 2 | =A1.group@i(S>max(E[,-1])) |
| 3 | =A2.new(~.min(S): S,~.max(E): E) |
| 4 | =A3.sum(interval@s(S,E)) |
| 5 | =A1.selec |

针对多条不连续或重叠的时间段,博客讨论了在Oracle数据库中如何进行时间累积合并计算。通过递归查询和SPL脚本,解决时间段合并问题,特别是处理时间段内含的情况。提供了多种实现方式,包括按时间排序、分组、构建新序表,并展示如何在Java应用中调用SPL脚本。
最低0.47元/天 解锁文章
686

被折叠的 条评论
为什么被折叠?



