时间段内去重叠时间

【问题】

startTime            endTime
2015-01-02        2015-02-03
2015-01-10        2015-02-05
2015-01-03        2015-01-04
2015-03-01        2015-03-05
返回结果
startTime          endTime
2015-01-02      2015-02-05
2015-03-01      2015-03-05

【回答】

如果是JAVA+SQL的场景,实现同样的运算,用SPL写起来要比窗口函数简单清晰许多:


A

B

1

$select startTime,endTime from tb order   by startTime

2

=A1.group@i(startTime>max(endTime[,-1]))

3

=A2.new(~.min(startTime):startTime,~.max(endTime):endTime)

A1sql取数,按startTime排序

A2:将时间段有重叠的分为一组

A3:构建新序表,取每组的最小值为startTime,最大值为endTime

写好的脚本,可以通过集算器JDBC与其他应用集成,可参考Java 如何调用 SPL 脚本