作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Oracle 服务器中有一个 SQL 表,其中包含事件的开始时间和结束时间值,并且希望通过 SQL 查询了解同一秒内发生的并发事件的最大数量(如果可能)。
我的表结构是:
EventID StartTime EndTime
===================================
12345 10:25:50 10:25:59
12346 10:25:51 10:26:00
12347 10:25:55 10:26:10
我尝试进行查询,选择小时、分钟和秒作为单独的字段,并按它们对记录进行分组,但由于我有时间范围,所以我不知道如何检查它们何时重叠(因为它们是同时执行的,如果他们有重叠的时间)。
如果不可能作为查询,您能给我推荐一种在 Java 中计算此数据的有效方法吗?我可以通过循环 ResultSet 想到一种方法,但不知道如何排列重叠事件。
最佳答案
创建一个包含增量的所有时间的列表 - 事件开始时 +1,事件结束时 -1。
然后用累加求和得到任意时刻的总活跃度并拉取最大值:
with times as (
select starttime as t, +1 as inc
from structure
union all
select endtime, -1
from structure
)
select t.*
from (select t, sum(inc) over (order by t) as actives
from (select t, sum(inc) as inc
from times
group by t
) t
order by actives desc
) t
where rownum = 1;
最里面的子查询(带有group by
)只是为了处理同时发生的事情。
关于java - 根据 timeStart 和 timeEnd 值选择最大并发记录数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30518352/
我在 Oracle 服务器中有一个 SQL 表,其中包含事件的开始时间和结束时间值,并且希望通过 SQL 查询了解同一秒内发生的并发事件的最大数量(如果可能)。 我的表结构是: EventID
我有两个日期时间选择器,仅格式化为时间(例如 07:30 AM)。 当我在这两个日期时间选择器中输入时间时,它应该提示是否与 mysql time_start 和 time_end 列的时间冲突(即使
我是一名优秀的程序员,十分优秀!