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

基于multiactualusetest表编写MySQL分组标记最大值的查询语句

单条MySQL查询实现分组内最大值标记(兼容无窗口函数/CTE环境)

解决方案代码

SELECT
    t.TAXDECNUM,
    t.ACTUALUSE,
    CASE WHEN t.MARKETVALUE = m.max_market THEN 1 ELSE 0 END AS COUNTX,
    t.TAXABLE,
    t.MARKETVALUE,
    t.ASSESSEDVALUE
FROM (
    -- 按TAXDECNUM和ACTUALUSE完成基础汇总
    SELECT
        TAXDECNUM,
        ACTUALUSE,
        ANY_VALUE(TAXABLE) AS TAXABLE, -- 若同一分组内TAXABLE值统一,用ANY_VALUE/MAX/MIN均可
        SUM(MARKETVALUE) AS MARKETVALUE,
        SUM(ASSESSEDVALUE) AS ASSESSEDVALUE
    FROM multiactualusetest
    GROUP BY TAXDECNUM, ACTUALUSE
) t
JOIN (
    -- 计算每个TAXDECNUM对应的最大MARKETVALUE
    SELECT
        TAXDECNUM,
        MAX(MARKETVALUE) AS max_market
    FROM (
        SELECT
            TAXDECNUM,
            SUM(MARKETVALUE) AS MARKETVALUE
        FROM multiactualusetest
        GROUP BY TAXDECNUM, ACTUALUSE
    ) g
    GROUP BY TAXDECNUM
) m ON t.TAXDECNUM = m.TAXDECNUM
ORDER BY t.TAXDECNUM, t.MARKETVALUE DESC;

代码说明

  1. 基础汇总子查询t:先对原始表multiactualusetest按TAXDECNUM和ACTUALUSE分组,汇总MARKETVALUE和ASSESSEDVALUE,同时通过ANY_VALUE(或MAX/MIN)获取TAXABLE字段值(需保证同一分组内该字段值逻辑一致)。
  2. 最大值计算子查询m:先做同样的分组汇总,再按TAXDECNUM分组提取每组的最大MARKETVALUE。
  3. 主查询关联与标记:通过TAXDECNUM关联两个子查询,用CASE语句判断当前行的MARKETVALUE是否等于对应分组的最大值,以此设置COUNTX为1或0。

适配说明

  • 全程使用嵌套子查询,未使用CTE、窗口函数(OVER/PARTITION)或多语句临时表,完全兼容PhpMyAdmin环境要求。
  • 若你的数据源已经是预先汇总好的表(而非原始明细),可直接去掉最内层的汇总逻辑,替换为汇总表的查询。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 08:33:26