java统计各年龄阶段的数据

查询结果如图所示:
在这里插入图片描述
返回的数据类型是Map类型
后端代码如下:

/*** 统计各年龄阶段人员* @return*/@Overridepublic Map<String, Integer> countPersonByAge() {//用list集合接收查询出来的数据List<Map<String, String>> ageList = this.baseMapper.countPersonByAge();//用LinkedHashMapMap集合来保证集合的有序Map<String, Integer> ageMap = new LinkedHashMap<>();//用来存储所有年龄阶段List<String> ageInfoList = new ArrayList<>();ageInfoList.add("16");ageInfoList.add("16-18");ageInfoList.add("18-55");ageInfoList.add("56-60");ageInfoList.add("61");Map<String, String> exisetMap = new HashMap<>();//new一个HashMap来放入数据库查出来的年龄阶段和数量for (Map<String, String> countListMap : ageList) {//用exisetMap.put(countListMap.get("age"), countListMap.get("count"));}for (String ageInfo : ageInfoList) {//通过key取出value,通过age取出countInteger count = Convert.toInt(exisetMap.get(ageInfo), 0);//如果年龄段查询出来的数据为空,给默认值0if (count == null) {count = 0;}ageMap.put(ageInfo, count);}return ageMap;}

sql:

 SELECTage,count( * ) AS countFROM(SELECTCASEWHEN age <![CDATA[ <= ]]> 16 THEN	'16'WHEN age <![CDATA[ <= ]]> 18 AND age >= 16 THEN	'16-18'WHEN age <![CDATA[ <= ]]> 55 AND age >= 18 THEN	'18-55'WHEN age <![CDATA[ <= ]]> 60 AND age >= 56 THEN	'56-60'WHEN age >= 61 THEN		'61'END AS ageFROMsite_person_basic_infoWHEREdelete_flag =0) AS aGROUP BYage


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部