表格名称 user, 字段 id, sex ( M 表示男, F表示 女), birthday出生日期, 没有 age字段

其中 ROUND(DATEDIFF(CURDATE(), birthday)/365.2422) 是获得 年龄

CASE WHEN的格式是:

CASEWHEN  ( 条件)  THEN  结果WHEN  ( 条件)  THEN  结果WHEN  ( 条件)  THEN  结果
END
SELECT nnd as ageRange,sex,count(*) as count from(SELECTCASEWHEN ROUND(DATEDIFF(CURDATE(), people_birthday)/365.2422) >= 0and ROUND(DATEDIFF(CURDATE(), people_birthday)/365.2422) <= 12 THEN '0-12岁'WHEN ROUND(DATEDIFF(CURDATE(), people_birthday)/365.2422) >= 13 and ROUND(DATEDIFF(CURDATE(), people_birthday)/365.2422) <= 17 THEN '13-17岁'WHEN ROUND(DATEDIFF(CURDATE(), people_birthday)/365.2422) >= 18 and ROUND(DATEDIFF(CURDATE(), people_birthday)/365.2422) <= 22 THEN '18-22岁'WHEN ROUND(DATEDIFF(CURDATE(), people_birthday)/365.2422) >= 23and ROUND(DATEDIFF(CURDATE(), people_birthday)/365.2422) <= 30 THEN '23-30岁'WHEN ROUND(DATEDIFF(CURDATE(), people_birthday)/365.2422) >= 31 and ROUND(DATEDIFF(CURDATE(), people_birthday)/365.2422) <= 59 THEN '31-59岁'WHEN ROUND(DATEDIFF(CURDATE(), people_birthday)/365.2422) >= 60 THEN '60岁以上'END as nnd,people_sex as sexfrom people_info_sync
) a GROUP BY nnd,sex;

结果:

存在的缺点: 因为是使用 group by的方法, 所以如果没有记录的话, 是不会返回数据的,
除非你用 left join 新建一张表来存 “0-12岁”,“13-17岁”,“18-22岁”,“23-30岁”,“31-59岁”,"60岁以上"这些数据, 然后使用 左连接 left join , 这样就能保证一定会有这些数据。。。但你的组长是无论如何也不会允许你这么干的哈哈。。

写了一个后台处理的方法, 可以参考下

    /*** sql查询使用Group By方法,如果数据库本身没有那条记录的话,就不会返回相应的总数,所以需要定死数组,再通过遍历的方式去查找* @return*/public List<CountAgeDto> countAge(){//这里就不能用 new String[]{"男","女"} 了,要和你数据库查出来的结果一样才行String[] sexArr = new String[]{"F","M"};String[] ageArr = new String[]{"0-12岁","13-17岁","18-22岁","23-30岁","31-59岁","60岁以上"};//从数据库获得数据, 这个countAge()方法要自己写,就执行上面的sql语句List<CountAgeDto> dataList =  peopleInfoSyncDao.countAge();//首先初始化List<CountAgeDto> countAgeDtoList = new ArrayList<>();for(String sex : sexArr){for(String age: ageArr){CountAgeDto countAgeDto = new CountAgeDto();countAgeDto.setAgeRange(age);countAgeDto.setSex(sex);//初始化为0, 确保都有值countAgeDto.setCount(0L);//遍历数据库查出来的集合if(dataList != null && dataList.size() > 0){for(CountAgeDto d : dataList){//如果和当前的sex和age相同,就说明count有值,则退出if(d.getAgeRange().equals(age) && d.getSex().equals(sex)){countAgeDto.setCount(d.getCount());break;}}}countAgeDtoList.add(countAgeDto);}}return countAgeDtoList;}

其中CountAgeDto是:

public class CountAgeDto {/*** 总数*/private Long count;/*** 年龄段*/private String ageRange;/*** 性别*/private String sex;public Long getCount() {return count;}public void setCount(Long count) {this.count = count;}public String getAgeRange() {return ageRange;}public void setAgeRange(String ageRange) {this.ageRange = ageRange;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}@Overridepublic String toString() {return "CountAgeDto{" +"count=" + count +", ageRange='" + ageRange + '\'' +", sex='" + sex + '\'' +'}';}
}

mysql根据出生日期统计各年龄段男女人数相关推荐

  1. mysql数据库统计各个年龄段男女人数

    在生活中需要统计某一年中男女出生人数,或者需要统计部门男女员工数量,就需要用到分组统计.分组查询,分组统计 分组统计中,先需要统计出各个年龄段人数,可以采用如下,语句,用sum求出表中各个年龄段人数 ...

  2. javapythonc就业人数比例_P100 统计各年龄段的人数

    所属年份:2011.9;2012.3; 请编写函数fun,该函数的功能是:统计各年龄段的人数.N个年龄通过调用随机函数获得,并放入主函数的age数组中.要求函数把0-9岁年龄段的人数放在d[0]中,把 ...

  3. 5. 统计各年龄段的人数。

    统计各年龄段的人数.N个年龄通过调用随机函数获得,并放在主函数的age数组中:要求函数把0至9岁年龄段的人数放在d[0]中,吧10~19段的人数 放在d[1]中,--,把100岁(含100岁)以上年龄 ...

  4. mysql 用法之 统计各地区注册人数

    我觉得今天我写的sql可以在博客里写上一笔了 SELECT     register_addr 'key',     count(user_id) 'value' FROM     (        ...

  5. mysql统计各年龄段的数量

    1.统计各年龄段的人数.1-10,11-20,20+,我用的是CASE WHEN的方式实现的. select age_temp,count(*) as total from ( select age, ...

  6. mysql男女人数统计查询

    说明:survey_consumer是表名,sex是表中性别字段,储存的是数字(0:女,1:男,2:未知) SELECT COUNT(*) num,CASE sex WHEN '1' THEN '男' ...

  7. MySQL根据出生日期查询年龄,以及对年龄进行分组统计

    表stu数据如下 1. 根据出生日期查询年龄 SELECT TIMESTAMPDIFF(YEAR,DATE(birthdate),CURDATE()) AS age FROM stu; 返回结果: 函 ...

  8. oracle统计一个班男生女生,一条sql统计一个班级的男女人数

    有一个 学生记录的表student,形式如下:  name  class sex  1 a 男 2 b 女 3 c 男 4 a 男 5 a 女 6 a 男 --  现要统计每个班级的男女人数,结果如下 ...

  9. 24、Power Query-数学运算的应用(统计男女人数)

    本节重点:Power Query-数学运算的应用(统计男女人数) 数学运算功能位置: 这一块应用起来比较简单,用处不是特别大,这里仅作简单说明. 例子:下图展示的人员表是姓名+身份证号码,现在要统计出 ...

  10. 根据身份证统计男女人数

    2019独角兽企业重金招聘Python工程师标准>>> 今天的这个SQL花了我大概四十多分钟,由于需求比之前的要复杂点,所以多花了点时间,下面就来分享下我的处理思路和完整的SQL代码 ...

最新文章

  1. Failed to resolve:com.android.support:appcompat-v7:报错处理
  2. 简易django项目之登录验证
  3. 线程安全: 互斥锁和自旋锁(10种)
  4. Android 是移动世界的鸭嘴兽
  5. 推荐算法---FM,协同过滤
  6. UML--组件图,部署图
  7. shell添加用户时设置密码脚本
  8. 【电脑主板维修】主板故障检测要领
  9. 电商系统如何搭建会员体系/会员制玩法?
  10. redis key设计技巧
  11. [安卓开发] Android 自己做双向手电筒 源代码
  12. 如何将Excel文件转换WPS格式?
  13. 2021-2027全球与中国USB智能电源板市场现状及未来发展趋势
  14. 疑因内部宫斗被离职,中兴70后程序员从公司坠楼 ​​​​
  15. 驼峰命名法(camelCase)
  16. 统计学习方法 | 概论
  17. Vue实现顶部导航栏设计
  18. C#利用OWC组件生成数据报表
  19. 词汇量计算机,都在说词汇量,究竟多少词汇才够用?
  20. java基础(适合零基础)持续更新

热门文章

  1. 配置caffe matlab 中遇到的坑
  2. 【平差软件学习---科傻】三、平面导线平差
  3. 图解splay / splay模板 / p3369
  4. U盘分区删除和新建分区
  5. U盘分区了怎么恢复?详细演示两个方法
  6. mac 外接双显示器
  7. sql日期中文大写显示
  8. 《2022中国PaaS市场研究及选型评估报告》正式发布
  9. AiHi+翼次元学院儿童自然感知实践“几米小甜田”+中韧开智“优慧码”| Wit++
  10. 038--想和权证恋个爱