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

Snowflake按金额区间分组统计:如何实现指定格式的采购数据统计?

最简实现方法

核心是通过CASE WHEN精准划分金额区间,搭配GROUP BY和COUNT()完成统计,同时规避区间重叠、重复计数等常见问题。

假设你的表名为purchase_records,采购ID字段为purchase_id,金额字段为amount(数值类型,如DECIMAL),直接执行以下SQL即可得到目标结果:

SELECT
  CASE
    WHEN amount BETWEEN 0 AND 500 THEN '$0 - $500'
    WHEN amount BETWEEN 501 AND 1999 THEN '$501 - $1999'
    WHEN amount BETWEEN 2000 AND 2999 THEN '$2000 - $2999'
    -- 可选:统计超出指定区间的记录,不需要可删除此分支
    ELSE '其他区间'
  END AS `金额区间`,
  -- 若单采购ID对应多条记录,用DISTINCT去重;每条记录对应唯一ID则直接用COUNT(purchase_id)
  COUNT(DISTINCT purchase_id) AS `数量`
FROM purchase_records
-- 可选:过滤负数等无效金额,不需要可删除
WHERE amount >= 0
GROUP BY `金额区间`
-- 强制按区间逻辑顺序排序,避免字符串排序导致的顺序混乱
ORDER BY
  CASE `金额区间`
    WHEN '$0 - $500' THEN 1
    WHEN '$501 - $1999' THEN 2
    WHEN '$2000 - $2999' THEN 3
    ELSE 4
  END;

常见问题排查(针对你之前结果不符的情况)

  • 区间重叠:比如同时将500包含在两个CASE条件中,导致统计重复
  • 重复计数:未使用DISTINCT,同一采购ID被多次统计
  • 顺序混乱:未指定ORDER BY,字符串排序会让区间顺序不符合预期
  • 无效数据干扰:未过滤负数、NULL等异常金额值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 23:42:27