时间段内去重叠时间
【问题】
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) |
A1:sql取数,按startTime排序
A2:将时间段有重叠的分为一组
A3:构建新序表,取每组的最小值为startTime,最大值为endTime
写好的脚本,可以通过集算器JDBC与其他应用集成,可参考Java 如何调用 SPL 脚本