首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

重叠时间段问题优化算法详解

分析 这是一个典型的重叠时间段的统计问题。具体来说,该需求可以细分为这样几个需要解决的问题: 一个房间内同一用户的重叠时间段合并。 拆分起止时间段跨天的时段。 取得活跃的时段。...二、优化重叠查询 如前所述,我们需要解决的第一个问题时合并一个房间内同一用户的重叠时间段。下面讨论两种自关联和游标实现方案。 1....下面是用游标合并重叠时间段的存储过程。...然后用下面的查询取得最大跨越天数: select max(i) from tmp_s; 最后将tmp_s与数字辅助表连接,进行跨天时间段的拆分,并将拆分后的结果存入临时表t1。...而MySQL 8在SQL功能上已经接近Oracle,重叠时间段问题用一句查询即可解决: with c1 as -- 合并同一房间同一用户的重叠时间段,用于统计峰值人数 ( select

5.3K40

一个有趣的时间段重叠问题

二、问题分析 这是一个典型的重叠时间段的统计问题。具体来说,有这样几个问题需要解决:1. 一个房间内同一用户的重叠时间段合并;2. 拆分起止时间段跨天的时段;3....在后面介绍计算活跃时间段内的不同用户数及其活跃时长的算法时,会看到这点非常重要。...这样我们可以将在线时间分成多个互斥的时间段,并且利用当前时间点前面的所有累计进出用户数,作为前一个时间点到当前时间点的重叠度,也即不同用户数。算法具体步骤如下。...SQL查询语句 with c1 as -- 合并同一房间同一用户的重叠时间段,用于统计峰值人数 ( select distinct roomid,userid,min(s) s,max(...由于HAWQ目前不支持递归查询,在生成C2时,使用了数字辅助表nums,目的是将一行转成多行。nums的数据是一个从1开始的序列,记录个数只需要等于最大跨越的天数加一即可。

4.3K20
领券