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

不使用游标、循环、lead/lag函数求时序数据三元组峰值的SQL方案问询

峰值识别方案

核心思路

由于X列是从1开始连续递增的整数,直接通过对X做数学运算生成分组标识即可实现每3个数据为一组,之后按分组聚合取每组Y的最大值,完全不需要用到游标、循环或者lead/lag类窗口偏移函数。

实现SQL

SELECT 
    GROUP_ID,
    MAX(Y) AS PEAK_VALUE
FROM (
    SELECT
        X,
        Y,
        -- 每3个连续X划分为同一组,分组ID从1开始递增
        FLOOR((X - 1) / 3) + 1 AS GROUP_ID
    FROM Z_AXIS
) T
GROUP BY GROUP_ID
ORDER BY GROUP_ID;

如果需要自动舍弃最后不足3个数据的分组,加上HAVING过滤即可:

SELECT 
    GROUP_ID,
    MAX(Y) AS PEAK_VALUE
FROM (
    SELECT
        X,
        Y,
        FLOOR((X - 1) / 3) + 1 AS GROUP_ID
    FROM Z_AXIS
) T
GROUP BY GROUP_ID
HAVING COUNT(*) = 3
ORDER BY GROUP_ID;

对应你的测试数据输出结果

  • 第1组(X=1~3,Y值10、5、8):峰值为10
  • 第2组(X=4~6,Y值20、30、15):峰值为30
  • 第3组(X=7~9,Y值20、2、14):峰值为20
  • 第4组(X=10~12,Y值6、50、20):峰值为50
  • 第5组(X=13~15,Y值30、60、25):峰值为60
  • 第6组(X=16~18,Y值15、0、4):峰值为15
  • 第7组(X=19~21,Y值2、8、10):峰值为10
  • 第8组(X=22~24,Y值15、12、40):峰值为40
  • 第9组(X=25,Y值20):峰值为20(开启不足3个舍弃过滤时此组会被排除)

内容的提问来源于stack exchange,提问作者Just an intern

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:18:00