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

MySQL GROUP BY分组后如何高效实现多区间条件聚合最小值计算

MySQL分组多区间价格统计高效实现方案

不需要编写大量重复子查询,也不需要做多次JOIN关联,直接用条件聚合即可实现需求,该方案仅需单次扫描数据表,是所有实现方式中性能最高的,新增统计区间仅需追加一行规则即可,维护成本极低。

核心写法如下,完全匹配你预期的查询逻辑:

SELECT 
    parent_id,
    MIN(price) AS min_price,
    MIN(CASE WHEN price > 50 THEN price END) AS p_50,
    MIN(CASE WHEN price > 100 THEN price END) AS p_100,
    -- 后续新增价格区间按相同格式追加即可
    MIN(CASE WHEN price > 200 THEN price END) AS p_200,
    MIN(CASE WHEN price > 500 THEN price END) AS p_500
FROM price_table
GROUP BY parent_id;

实现原理

  • 当价格满足区间判断条件时,CASE WHEN返回对应的price值,不满足条件时默认返回NULL
  • MySQL的MIN()聚合函数会自动忽略NULL值,最终计算结果就是对应区间内的最低价格,和你设想的MIN(price WHERE 筛选条件)逻辑完全一致
  • 如果某个parent_id下没有符合对应区间的价格,对应字段会返回NULL,若需要自定义默认值,可以在CASE语句末尾加ELSE 自定义值即可

性能对比

  • 条件聚合:仅对数据表做1次扫描,分组计算时同步完成所有区间的统计,区间数量增加不会带来额外的扫描开销
  • 关联子查询/多表JOIN:每新增1个统计区间就会新增1次子查询或JOIN关联计算,区间越多性能下降越明显,20个区间的场景下性能差距会非常显著

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 21:48:48