You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中获取首个峰值区间的最大Interval End问题求助

问题描述

我正在处理15秒时间区间的最小和最大时间戳查询,目标是找到存在峰值消息率的区间。当存在2个及以上峰值区间时,仅需第一个区间的数值。当前问题是用max()函数获取interval_end时,得到的是最晚区间的时间戳(2023-02-03 16:00:17.976),这是错误的,正确值应为首个峰值区间的2023-02-03 15:59:47.975,interval_start的最小值是正确的(2023-02-03 15:59:32.975)。现有SQL代码如下:

select day,
           interval_start,
           interval_end,
           peak_msgrate_incoming,
           max_peak_incoming_msgrate,
           min(if(peak_msgrate_incoming = max_peak_incoming_msgrate, interval_start, null)) as interval_start_peak_in,
           max(if(peak_msgrate_incoming = max_peak_incoming_msgrate, interval_end, null)) as interval_end_peak_out
from table
group by etc..

需要解决如何获取首个峰值区间的interval_end。

解决方案

要获取首个峰值区间的interval_end,核心是先锁定第一个峰值区间的起始时间,再匹配对应的结束时间,而非直接用max()函数取所有峰值区间的最晚结束时间。以下是两种可行方案:

方法一:窗口函数定位首个峰值区间

通过窗口函数给峰值区间按时间排序,直接筛选出第一个峰值区间的完整时间范围:

with peak_intervals as (
    select 
        day,
        interval_start,
        interval_end,
        peak_msgrate_incoming,
        max_peak_incoming_msgrate,
        -- 按时间给峰值区间排序,标记第一个峰值
        row_number() over (partition by day order by interval_start) as rn
    from your_table
    where peak_msgrate_incoming = max_peak_incoming_msgrate
)
select 
    day,
    interval_start as interval_start_peak_in,
    interval_end as interval_end_peak_out
from peak_intervals
where rn = 1;

方法二:关联子查询匹配对应结束时间

利用已得到的正确interval_start_peak_in,关联原表获取对应的interval_end:

select 
    day,
    interval_start_peak_in,
    (select interval_end from your_table t2 
     where t2.day = t1.day 
       and t2.interval_start = t1.interval_start_peak_in) as interval_end_peak_out
from (
    select 
        day,
        min(if(peak_msgrate_incoming = max_peak_incoming_msgrate, interval_start, null)) as interval_start_peak_in
    from your_table
    group by day
) t1;

核心逻辑说明

原代码中max(if(...))会返回所有峰值区间里最晚的interval_end,不符合需求;两种方案均先锁定首个峰值区间的起始时间,再匹配对应的结束时间,确保拿到的是第一个峰值区间的完整时间范围。

内容的提问来源于stack exchange,提问作者MtlTechGuy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 09:35:08