MySQL对不同年龄段的用户信息做统计(附按不同时间段统计记录)

上一篇:查询近30天的记录
上一篇:按时间段统计记录

题目

在这里插入图片描述
在这里插入图片描述
即:不同年龄段的客户信息。

提前声明:

本题是作者根据自己的知识独立解决,并非标准答案,如果更好的答案,欢迎在下方留言

数据库中的表

在这里插入图片描述
在这里插入图片描述

知识储备

floor():结果向下取整
now():获取当前具体时间
year():获取年份
ifnull(a,b):如果a的值不为null,结果为a,否贼为b

解题思路

难点两个:1.年龄段划分。2.年薪

难点一:

先说说年薪怎么算和难点:

表中只给了月薪,和年终奖,并且年终奖不是所有人都有。

分组是一定要做的,在不考虑年龄段的问题时,加入统计每个人的年薪,则是,按员工分组,月薪*12 + 年奖。

因为年奖可能为空,所以此时会报错,使用ifnull函数可以解决这个问题,如果为空,取0

难点二:

年龄段划分和我上一篇时间段划分类似,我就是按照这个思路想的。

因为题目只给了日期,所以,要先获取年龄,即:当前年份-生日年份。用到了now() 和year(),不做过多讲解。

接下来,按照题目要求,10为一个年龄段,那就将年龄/10,向下取整。就能判断当前用户在哪个范围。

最后,按照年龄段分组,聚合。

答案

select floor((YEAR(now()) - YEAR(c.birthdate)) / 10) as ys,
count(floor((YEAR(now()) - YEAR(c.birthdate)) / 10)) as count,
avg(s.mothsalary*12 + IFNULL(s.yearbonus,0)) as avg
FROM customers c,salary s
WHERE c.id = s.id 
GROUP BY ys
ORDER BY ys ASC

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43093501/article/details/97612951