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

SQL中按固定增量值分组的高效实现方法

高效实现数值按固定增量分组统计

核心思路

通过数学计算自动生成分组区间,完全避免编写大量CASE WHEN分支。利用取整函数对数值进行运算,快速定位每条记录对应的分组范围,适配0.01到80000的全数值区间。

实现代码(以MySQL为例)

SELECT
    COUNT(客户ID) AS 客户数量,
    CASE
        WHEN FLOOR(数值 / 50) = 0 THEN '<50'
        ELSE CONCAT(FLOOR(数值 / 50) * 50, '-', (FLOOR(数值 / 50) + 1) * 50)
    END AS 分组,
    ROUND(SUM(数值), 2) AS 总数值
FROM
    你的表名
GROUP BY
    CASE
        WHEN FLOOR(数值 / 50) = 0 THEN '<50'
        ELSE CONCAT(FLOOR(数值 / 50) * 50, '-', (FLOOR(数值 / 50) + 1) * 50)
    END
ORDER BY
    FLOOR(数值 / 50);

关键细节说明

  • 分组序号计算:FLOOR(数值 / 50)将数值除以50后向下取整,得到分组的索引值(例如17.12对应0,52.23对应1,1542.23对应30)。
  • 分组名称自动生成:索引为0时直接显示<50,其余情况通过CONCAT函数拼接区间,自动生成50-100、100-150这类规范分组名。
  • 排序逻辑:最后按FLOOR(数值 / 50)排序,确保分组按数值从小到大排列,避免字符串排序导致的顺序错乱。
  • 数值精度处理:用ROUND(SUM(数值), 2)保证总数值保留两位小数,和示例输出格式一致。

多数据库适配

  • PostgreSQL:逻辑完全一致,FLOOR函数和字符串拼接语法通用。
  • SQL Server:仅需确认FLOOR函数使用正确,字符串拼接可替换为+运算符(如CAST(FLOOR(数值/50)*50 AS VARCHAR) + '-' + CAST((FLOOR(数值/50)+1)*50 AS VARCHAR))。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 19:45:31