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

MySQL表按日期排序统计Higher High更高收盘价的实现方法咨询

MySQL实现Higher High(更高高点)判断方案

适用MySQL 8.0及以上版本(窗口函数方案,性能更优)

使用MAX()窗口函数获取当前行之前所有收盘价的最大值,直接比对即可:

SELECT 
    SYMBOL,
    CLOSE,
    DayNo,
    YearNo,
    Rank_No,
    CASE 
        WHEN CLOSE > MAX(CLOSE) OVER (
            -- 按股票代码、年份分区,若需统计上市以来所有高点可去掉YearNo分区
            PARTITION BY SYMBOL, YearNo 
            ORDER BY DayNo 
            -- 取当前行之前的所有行范围
            ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING
        ) THEN 'YES'
        ELSE 'NO'
    END AS `Count`
FROM 替换为你的实际表名
ORDER BY SYMBOL, YearNo, DayNo;

适用MySQL 5.x版本(子查询兼容方案)

没有窗口函数的低版本MySQL可以用关联子查询实现逻辑:

SELECT 
    t1.SYMBOL,
    t1.CLOSE,
    t1.DayNo,
    t1.YearNo,
    t1.Rank_No,
    CASE 
        WHEN t1.CLOSE > (
            SELECT MAX(t2.CLOSE) 
            FROM 替换为你的实际表名 t2 
            WHERE t2.SYMBOL = t1.SYMBOL 
              -- 若需统计上市以来所有高点可去掉下一行的YearNo条件
              AND t2.YearNo = t1.YearNo 
              AND t2.DayNo < t1.DayNo
        ) THEN 'YES'
        ELSE 'NO'
    END AS `Count`
FROM 替换为你的实际表名 t1
ORDER BY t1.SYMBOL, t1.YearNo, t1.DayNo;

说明

以上两种方案均可完全匹配你给出的预期输出结果,第一行由于没有之前的收盘价数据默认返回NO,符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 21:36:06