SQL数据分桶统计怎么做_区间统计实现方案解析【教学】

admin 百科 13
SQL数据分桶统计本质是将连续数值按预设区间归类计数,核心通过CASE WHEN(适合不规则区间)、FLOOR/CEILING(适合等宽分桶)或WIDTH_BUCKET函数(Oracle/PG专属)实现分组逻辑,再配合GROUP BY和COUNT完成统计。

SQL数据分桶统计怎么做_区间统计实现方案解析【教学】-第1张图片-佛山资讯网

SQL数据分桶统计,本质是把连续数值按预设区间(桶)归类后计数,核心靠 CASE WHENFLOOR/CEILING + 运算 实现分组逻辑,再配合 GROUP BYCOUNT 完成统计。

用 CASE WHEN 明确划分区间(推荐新手)

适合区间不规则、有业务含义或需要自定义标签的场景。比如统计用户年龄分布:
0–17为“未成年”,18–35为“青年”,36–59为“中年”,60+为“老年”。

  • 每个区间写一个 WHEN 条件,注意边界是否包含(用 >= / > /
  • ELSE 不可少,兜底异常值(如年龄为负、超200等),避免漏统计
  • 别在 SELECT 中直接写 COUNT(*),而应先生成“桶列”,再 GROUP BY 该列

示例:

SELECT
  CASE
    WHEN age BETWEEN 0 AND 17 THEN '未成年'
    WHEN age BETWEEN 18 AND 35 THEN '青年'
    WHEN age BETWEEN 36 AND 59 THEN '中年'
    WHEN age >= 60 THEN '老年'
    ELSE '未知'
  END AS age_group,
  COUNT(*) AS cnt
FROM users
GROUP BY age_group;

用 FLOOR 或 CEILING 做等宽分桶(适合数值型连续字段)

当区间等距(如每10岁一桶、每100元一档),用数学函数更简洁、易扩展。关键在构造“桶编号”:用原始值做除法再取整,即可映射到整数桶号。

标签: oracle 大数据

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~