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

BigQuery SQL问题:基于时间范围求字段最大值

解决方案

问题1:按start_time找后续15秒的最大速度

直接关联表a和表b,限定b的时间落在a.start_time到a.start_time + 15的窗口内,然后按表a的start_time分组计算最大值:

SELECT 
    a.start_time,
    MAX(b.velocity) AS max_velocity_next_15s
FROM a
LEFT JOIN b 
    ON b.timestamp BETWEEN a.start_time AND a.start_time + 15
GROUP BY a.start_time;

若某个start_time的15秒窗口内无表b数据,MAX(b.velocity)会返回NULL,符合左连接的预期。

问题2:按时间区间找最大速度

关联表a和表b,限定b的时间在a.start_time到a.end_time区间内,按表a的start_time和end_time分组计算最大值:

SELECT 
    a.start_time,
    a.end_time,
    MAX(b.velocity) AS max_velocity_in_interval
FROM a
LEFT JOIN b 
    ON b.timestamp BETWEEN a.start_time AND a.end_time
GROUP BY a.start_time, a.end_time;

针对你的测试数据,第一条区间包含表b的两个数据,最大速度为1.683;第二条区间无匹配数据,结果会返回NULL。

原代码问题分析

你原代码的核心错误:

  • 按b.timestamp分组,这会把每个b的时间点单独分组,而非按表a的每一行分组
  • 关联条件max_vel.timestamp = a.start_time逻辑错误,表b的时间戳不一定等于表a的start_time,导致匹配完全偏离需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:37:08