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

如何对OrderDetails表按Order Value区间分组统计对应记录数量

实现方案

你可以使用标准SQL的CASE WHEN语法完成自定义区间分组统计,该写法兼容所有主流关系型数据库(MySQL、PostgreSQL、SQL Server、Oracle等),具体语句如下:

SELECT
  CASE
    WHEN `Order Value` BETWEEN 1 AND 2000 THEN 'Between 1 to 2000'
    WHEN `Order Value` BETWEEN 2001 AND 4000 THEN 'Between 2001 to 4000'
    WHEN `Order Value` BETWEEN 4001 AND 7000 THEN 'Between 4001 to 7000'
    WHEN `Order Value` BETWEEN 7001 AND 10000 THEN 'Between 7001 to 10000'
    WHEN `Order Value` >= 10001 THEN 'Above 10001'
  END AS `Order Value Group`,
  COUNT(*) AS `Count`
FROM OrderDetails
GROUP BY `Order Value Group`
ORDER BY 
  CASE `Order Value Group`
    WHEN 'Between 1 to 2000' THEN 1
    WHEN 'Between 2001 to 4000' THEN 2
    WHEN 'Between 4001 to 7000' THEN 3
    WHEN 'Between 7001 to 10000' THEN 4
    WHEN 'Above 10001' THEN 5
  END;

代码说明

  • 用CASE WHEN对Order Value字段按指定区间做映射,生成对应分组名称
  • 用COUNT(*)统计每个分组的记录数
  • 末尾的排序逻辑是为了保证输出的分组顺序和预期一致,避免数据库默认按字符串排序出现顺序错乱问题
  • 如果你实际使用的表字段名没有空格,可以去掉字段名外层的反引号按需调整即可

如果使用PostgreSQL、Oracle这类支持WIDTH_BUCKET函数的数据库,也可以用该函数快速生成区间分组,写法更简洁,但自定义区间的灵活度不如CASE WHEN高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:36:03