mysql根据出生日期统计各年龄段男女人数
表格名称 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根据出生日期统计各年龄段男女人数相关推荐
- mysql数据库统计各个年龄段男女人数
在生活中需要统计某一年中男女出生人数,或者需要统计部门男女员工数量,就需要用到分组统计.分组查询,分组统计 分组统计中,先需要统计出各个年龄段人数,可以采用如下,语句,用sum求出表中各个年龄段人数 ...
- javapythonc就业人数比例_P100 统计各年龄段的人数
所属年份:2011.9;2012.3; 请编写函数fun,该函数的功能是:统计各年龄段的人数.N个年龄通过调用随机函数获得,并放入主函数的age数组中.要求函数把0-9岁年龄段的人数放在d[0]中,把 ...
- 5. 统计各年龄段的人数。
统计各年龄段的人数.N个年龄通过调用随机函数获得,并放在主函数的age数组中:要求函数把0至9岁年龄段的人数放在d[0]中,吧10~19段的人数 放在d[1]中,--,把100岁(含100岁)以上年龄 ...
- mysql 用法之 统计各地区注册人数
我觉得今天我写的sql可以在博客里写上一笔了 SELECT register_addr 'key', count(user_id) 'value' FROM ( ...
- mysql统计各年龄段的数量
1.统计各年龄段的人数.1-10,11-20,20+,我用的是CASE WHEN的方式实现的. select age_temp,count(*) as total from ( select age, ...
- mysql男女人数统计查询
说明:survey_consumer是表名,sex是表中性别字段,储存的是数字(0:女,1:男,2:未知) SELECT COUNT(*) num,CASE sex WHEN '1' THEN '男' ...
- MySQL根据出生日期查询年龄,以及对年龄进行分组统计
表stu数据如下 1. 根据出生日期查询年龄 SELECT TIMESTAMPDIFF(YEAR,DATE(birthdate),CURDATE()) AS age FROM stu; 返回结果: 函 ...
- oracle统计一个班男生女生,一条sql统计一个班级的男女人数
有一个 学生记录的表student,形式如下: name class sex 1 a 男 2 b 女 3 c 男 4 a 男 5 a 女 6 a 男 -- 现要统计每个班级的男女人数,结果如下 ...
- 24、Power Query-数学运算的应用(统计男女人数)
本节重点:Power Query-数学运算的应用(统计男女人数) 数学运算功能位置: 这一块应用起来比较简单,用处不是特别大,这里仅作简单说明. 例子:下图展示的人员表是姓名+身份证号码,现在要统计出 ...
- 根据身份证统计男女人数
2019独角兽企业重金招聘Python工程师标准>>> 今天的这个SQL花了我大概四十多分钟,由于需求比之前的要复杂点,所以多花了点时间,下面就来分享下我的处理思路和完整的SQL代码 ...
最新文章
- Failed to resolve:com.android.support:appcompat-v7:报错处理
- 简易django项目之登录验证
- 线程安全: 互斥锁和自旋锁(10种)
- Android 是移动世界的鸭嘴兽
- 推荐算法---FM,协同过滤
- UML--组件图,部署图
- shell添加用户时设置密码脚本
- 【电脑主板维修】主板故障检测要领
- 电商系统如何搭建会员体系/会员制玩法?
- redis key设计技巧
- [安卓开发] Android 自己做双向手电筒 源代码
- 如何将Excel文件转换WPS格式?
- 2021-2027全球与中国USB智能电源板市场现状及未来发展趋势
- 疑因内部宫斗被离职,中兴70后程序员从公司坠楼 ​​​​
- 驼峰命名法(camelCase)
- 统计学习方法 | 概论
- Vue实现顶部导航栏设计
- C#利用OWC组件生成数据报表
- 词汇量计算机,都在说词汇量,究竟多少词汇才够用?
- java基础(适合零基础)持续更新