Access SQL按年龄分组统计男女人数的实现问题
解决方案
要实现按年龄分组、男女统计结果同行展示的需求,你可以使用条件聚合改写查询,通过IIF函数分别统计男女数量,仅按年龄分组即可:
SELECT Round((Date()-[DOB])/365.5) AS AGE, Sum(IIF(Datos.GENDER = "M", 1, 0)) AS Male_Count, Sum(IIF(Datos.GENDER = "F", 1, 0)) AS Female_Count FROM Datos WHERE Datos.GENDER IN ("M", "F") AND Year([DATE_DATE]) = Year(Date()) AND DOB IS NOT NULL GROUP BY Round((Date()-[DOB])/365.5) ORDER BY Round((Date()-[DOB])/365.5);
关键改动说明:
- 用
Sum(IIF(...))替代原有的Count+性别分组:通过条件判断,符合性别条件的记为1,否则为0,求和后得到对应性别的人数 - 移除
GROUP BY中的Datos.GENDER,仅保留年龄作为分组依据,确保每个年龄只生成一行数据 - 把
OR条件改成IN,让SQL语句更简洁
这样查询结果会以年龄为行,每行同时展示该年龄段的男性和女性人数,解决原查询男女分行的问题。
内容的提问来源于stack exchange,提问作者Juan Perez
相关产品推荐
相关产品推荐

