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

MySQL分组需求:如何将间隔小于2分钟的记录合并为同一组

解决方案

方法1:基于UNIX时间戳分组(兼容所有MySQL版本)

把时间转换为秒级UNIX时间戳后,除以120(2分钟对应的秒数)取整,这样间隔在2分钟内的记录会被归为同一组:

SELECT GROUP_CONCAT(text) as final_text
FROM main 
WHERE HSA = 'YES'
GROUP BY FLOOR(UNIX_TIMESTAMP(timestamps) / 120);

如果需要在结果中展示分组对应的基准时间,可以调整为:

SELECT 
  FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP(timestamps)/120)*120) as group_time,
  GROUP_CONCAT(text) as final_text
FROM main 
WHERE HSA = 'YES'
GROUP BY group_time;

方法2:使用窗口函数(MySQL 8.0及以上版本)

如果需要更灵活的连续时间合并(仅把时间差小于2分钟的连续记录归为一组),可以用窗口函数标记分组:

WITH ranked_records AS (
  SELECT 
    text,
    timestamps,
    -- 当前记录与前一条时间差≥2分钟时,标记为新分组起点
    IF(TIMESTAMPDIFF(MINUTE, LAG(timestamps) OVER (ORDER BY timestamps), timestamps) >= 2, 1, 0) AS is_new_group
  FROM main 
  WHERE HSA = 'YES'
),
grouped_records AS (
  SELECT 
    text,
    timestamps,
    -- 累计求和生成唯一分组ID
    SUM(is_new_group) OVER (ORDER BY timestamps) AS group_id
  FROM ranked_records
)
SELECT 
  MIN(timestamps) AS group_start_time,
  GROUP_CONCAT(text) AS final_text
FROM grouped_records
GROUP BY group_id;

说明

  • 方法1用固定2分钟块划分时间,能直接满足你将12:36的记录合并到12:35分组的需求。
  • 方法2适合处理非固定间隔的连续场景,比如12:35、12:36、12:38的记录会分成两组:前两条合并,12:38单独成组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:50:37