我有一张像这样的桌子:
user | area | start | end
1 1 12 18
1 1 19 27
1 1 29 55
1 1 80 99
意思是:从“开始”到“结束”时间,一个“用户”出现在一个“区域”,区域可以重叠。
我想要的是得到如下结果:
user | start-end
1 12-18,19-27,29-55
1 80-99
这意味着:组合出现时差小于指定值,即(row2.start - row1.end < 10),并且一个结果行代表用户对该区域的一次“访问”。目前我可以通过使用一条sql语句比较同一张表来区分每次访问并获得访问次数。但我无法找到获得上述结果的方法。任何帮助表示赞赏。
解释:前3个出现链接在一起,因为只有一次访问,因为:row2.start-row1.end < 10 and row3.start-row2.end < 10,最后出现的是新访问,因为:80(row4.start) - 55(row3.end) >= 10 。