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

如何用SQL将数据按5个年龄区间分组?已完成首个区间不知后续

SQL年龄区间分组实现方案

可以用CASE WHEN语句完整划分所有年龄区间,再配合GROUP BY完成分组统计。以下是通用实现代码:

SELECT
  CASE
    WHEN age < 20 THEN '<20'
    WHEN age BETWEEN 20 AND 39 THEN '20-39'
    WHEN age BETWEEN 40 AND 59 THEN '40-59'
    WHEN age BETWEEN 60 AND 79 THEN '60-79'
    WHEN age >= 80 THEN '>=80'
    ELSE '未知' -- 处理年龄为空或异常值的情况
  END AS age_group,
  COUNT(*) AS user_count -- 可替换为SUM、AVG等你需要的聚合函数
FROM your_table_name -- 替换成你的实际表名
GROUP BY age_group
ORDER BY 
  CASE age_group
    WHEN '<20' THEN 1
    WHEN '20-39' THEN 2
    WHEN '40-59' THEN 3
    WHEN '60-79' THEN 4
    WHEN '>=80' THEN 5
    ELSE 6
  END; -- 保证分组结果按区间顺序展示

关键说明:

  • CASE WHEN按顺序匹配条件,一旦满足就返回对应标签,不会出现重复匹配(比如age=20只会命中第二个条件)
  • ELSE '未知'用于处理年龄为NULL或超出范围的异常数据,避免分组遗漏
  • 嵌套CASE的ORDER BY是为了让结果按你定义的区间顺序输出,否则会默认按字符串排序(比如'>=80'会排在'<20'前面)

如果你的SQL方言不支持GROUP BY别名,只需把GROUP BY后的age_group替换成整个CASE语句即可:

GROUP BY
  CASE
    WHEN age < 20 THEN '<20'
    WHEN age BETWEEN 20 AND 39 THEN '20-39'
    WHEN age BETWEEN 40 AND 59 THEN '40-59'
    WHEN age BETWEEN 60 AND 79 THEN '60-79'
    WHEN age >= 80 THEN '>=80'
    ELSE '未知'
  END

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 08:39:56