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

构建基于条件选择GROUP BY分组取值的SQL查询

SQL分组查询需求解决

需求说明

按value字段分组后,执行以下逻辑:

  • 若分组内存在以2开头的fee值,选取该分组内fee的最小值
  • 若分组内仅存在以4开头的fee值,选取该分组内fee的最大值

输入数据

valuefee
val_12001
val_14003
val_14002
val_24512
val_24186
val_34125
val_42058
val_52296

现有无法满足需求的SQL

SELECT
value, 
CASE 
    When CAST (fee as varchar) like '1%' THEN min(fee)
    ELSE max(fee)
END as fee_sorted
FROM table_1
GROUP BY 1

期望输出结果

valuefee_sorted
val_12001
val_24512
val_34125
val_42058
val_52296

正确SQL解决方案

SELECT
    value,
    CASE
        -- 判断分组内是否存在以2开头的fee值
        WHEN MAX(CASE WHEN CAST(fee AS VARCHAR) LIKE '2%' THEN 1 ELSE 0 END) = 1
            THEN MIN(fee)
        ELSE
            MAX(fee)
    END AS fee_sorted
FROM table_1
GROUP BY value;

逻辑说明

  1. 通过MAX(CASE WHEN CAST(fee AS VARCHAR) LIKE '2%' THEN 1 ELSE 0 END)判断分组内是否存在以2开头的fee:只要有一个符合条件,结果就是1,否则为0
  2. 若判断结果为1,取分组内fee的最小值;否则取最大值,匹配仅存在4开头值的场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 19:47:39