我得到了一些我不能理解的东西
原始数据显示每15分钟间隔,我想把他们分组的基础上,如果他们是连续的15分钟间隔(见下面的截图),我想这样做多次为每个用户和许多用户…如果只使用sql就可以扩展到1000个用户,你有什么想法吗?

任何帮助都会被告知
谢谢
发布于 2021-02-09 10:48:33
这是一种缝隙和岛屿问题。使用lag()获取差值,然后使用累积和来确定组:
select user_id, min(start_time), max(end_time)
from (select t.*,
sum( case when prev_end_time <> start_time then 0 else 1 end) over (partition by user_id order by start_time) as grp
from (select t.*,
lag(end_time) over (partition by user_id order by start_time) as prev_end_time
from t
) t
) t
group by user_id, grp;https://stackoverflow.com/questions/66112228
复制相似问题