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

如何在MySQL中实现年龄段分组?现有查询语句失效求解决

解决SQL中按出生年份生成年龄段分组的问题

你的原查询有两个核心问题导致无法运行:

  1. 缺少GROUP BY子句:使用COUNT(*)聚合函数时,必须将非聚合列(Year_Birth、Age_group)加入分组,否则SQL引擎无法确定如何聚合数据。
  2. 出生年份与年龄段的对应逻辑错误:比如1990年出生的人(以2024年为例,年龄为34岁)被错误分到了"18-24"组,区间对应完全颠倒。

修正方案1:先计算年龄再分组(推荐,适配任意年份)

通过当前年份减去出生年份得到实际年龄,再用CASE语句分组,逻辑更直观且不受年份变化影响:

SELECT 
    Year_Birth,
    FLOOR(DATEDIFF(CURRENT_DATE, STR_TO_DATE(CONCAT(Year_Birth, '-01-01'), '%Y-%m-%d')) / 365) AS Age,
    CASE
        WHEN FLOOR(DATEDIFF(CURRENT_DATE, STR_TO_DATE(CONCAT(Year_Birth, '-01-01'), '%Y-%m-%d')) / 365) BETWEEN 18 AND 24 THEN '18-24'
        WHEN FLOOR(DATEDIFF(CURRENT_DATE, STR_TO_DATE(CONCAT(Year_Birth, '-01-01'), '%Y-%m-%d')) / 365) BETWEEN 25 AND 34 THEN '25-34'
        WHEN FLOOR(DATEDIFF(CURRENT_DATE, STR_TO_DATE(CONCAT(Year_Birth, '-01-01'), '%Y-%m-%d')) / 365) BETWEEN 35 AND 44 THEN '35-44'
        WHEN FLOOR(DATEDIFF(CURRENT_DATE, STR_TO_DATE(CONCAT(Year_Birth, '-01-01'), '%Y-%m-%d')) / 365) BETWEEN 45 AND 54 THEN '45-54'
        WHEN FLOOR(DATEDIFF(CURRENT_DATE, STR_TO_DATE(CONCAT(Year_Birth, '-01-01'), '%Y-%m-%d')) / 365) BETWEEN 55 AND 64 THEN '55-64'
        ELSE '65+' 
    END AS Age_group,
    COUNT(*) AS count
FROM marketing_campaign
GROUP BY Year_Birth, Age_group;

注:STR_TO_DATE和DATEDIFF是MySQL语法,不同数据库的日期函数略有差异:

  • PostgreSQL用AGE(CURRENT_DATE, MAKE_DATE(Year_Birth, 1, 1))计算年龄
  • SQL Server用DATEDIFF(YEAR, CONCAT(Year_Birth, '-01-01'), GETDATE())

修正方案2:直接修正出生年份区间(固定当前年份)

如果确定以某一固定年份(比如2024)计算,可直接调整出生年份区间,同时补上GROUP BY:

SELECT 
    Year_Birth,
    CASE
        WHEN Year_Birth BETWEEN 2000 AND 2006 THEN '18-24'
        WHEN Year_Birth BETWEEN 1990 AND 1999 THEN '25-34'
        WHEN Year_Birth BETWEEN 1980 AND 1989 THEN '35-44'
        WHEN Year_Birth BETWEEN 1970 AND 1979 THEN '45-54'
        WHEN Year_Birth BETWEEN 1960 AND 1969 THEN '55-64'
        ELSE '65+' 
    END AS Age_group,
    COUNT(*) AS count
FROM marketing_campaign
GROUP BY Year_Birth, Age_group;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:55:13