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

MySQL查询同日期连续3条及以上amount>8.00的分钟级数据

解决同日期内连续分钟记录筛选问题

针对你的需求,核心思路是通过分组标识连续时间区间,再筛选出符合条件的记录组。以下是具体实现方案:

核心逻辑说明

  1. 先过滤出amount > 8.00的有效记录;
  2. 按日期分组,给每条记录生成递增行号,结合分钟级时间戳计算组ID——同一连续分钟区间的记录会得到相同的组ID;
  3. 统计每个组的记录数,筛选出记录数≥3的组,最终输出这些组内的所有记录。

MySQL 实现语句

WITH filtered_data AS (
    SELECT 
        date,
        time,
        amount,
        -- 按日期分组生成递增行号
        ROW_NUMBER() OVER (PARTITION BY date ORDER BY time) AS rn,
        -- 转换为分钟级时间戳(便于计算连续区间)
        UNIX_TIMESTAMP(CONCAT(date, ' ', time)) DIV 60 AS minute_ts
    FROM your_table_name
    WHERE amount > 8.00
),
grouped_data AS (
    SELECT 
        date,
        time,
        amount,
        -- 计算组ID:连续分钟的记录会得到相同值
        minute_ts - rn AS group_id
    FROM filtered_data
)
SELECT 
    g.date,
    g.time,
    g.amount
FROM grouped_data g
JOIN (
    SELECT 
        date,
        group_id,
        COUNT(*) AS record_count
    FROM grouped_data
    GROUP BY date, group_id
    HAVING record_count >= 3
) valid_groups 
ON g.date = valid_groups.date AND g.group_id = valid_groups.group_id
ORDER BY g.date, g.time;

性能优化建议

由于数据量达260万,建议给date、time、amount字段建立联合索引:

CREATE INDEX idx_date_time_amount ON your_table_name(date, time, amount);

该索引可大幅提升过滤和排序的效率,避免全表扫描。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 03:24:23