0
我有用户访问的表等这样的:有条件集合行
SELECT * FROM visits ORDER BY start_time;
user_id | start_time | end_time
---------+---------------------+---------------------
10 | 2016-06-01 05:45:00 | 2016-06-01 06:00:00
10 | 2016-06-01 06:05:00 | 2016-06-01 06:30:00
10 | 2016-06-01 06:10:00 | 2016-06-01 06:40:00
10 | 2016-06-02 10:00:00 | 2016-06-01 10:30:00
10 | 2016-06-03 13:00:00 | 2016-06-01 14:00:00
我想“合并”行,其中所述访问重叠,或者有10分钟内彼此,像这样:
user_id | start_time | end_time
---------+---------------------+---------------------
10 | 2016-06-01 05:45:00 | 2016-06-01 06:40:00
10 | 2016-06-02 10:00:00 | 2016-06-01 10:30:00
10 | 2016-06-03 13:00:00 | 2016-06-01 14:00:00
- 第一3行中,因为前两行合并成1彼此和第三行的5分钟(少于10分钟)内重叠第二
- 最后三个行s是没有改变,因为没有行是在10分钟内
我不认为这是可能的使用GROUP BY
因为每个行的分组函数返回值将取决于多行。我在想窗口函数可以帮助,但一直在努力构建查询。
我使用AWS Redshift
感谢您的帮助!