【MySQL】一条SQL查询本年度每月即将退休的人数?

本文介绍了一种使用SQL查询的方法,来统计本年度内不同性别和职级的员工退休情况,详细展示了如何根据年龄和职级条件筛选即将退休的员工。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过SQL来查询本年度员工退休情况统计,其中男性60周岁退休,女性副处级以上(含副处)60周岁退休,副处级以下则是55周岁退休。

0、本年度第一天
$year_start = date('Y-01-01 00:00:00');
1、先得出用户的周岁年龄
SELECT TIMESTAMPDIFF(YEAR, @birthday, '$year_start') ;
2、再通过条件进行判断
SELECT SUM(mn.tag) sum,mn.mon FROM (
	SELECT a.sex,TIMESTAMPDIFF(YEAR, a.birthday, '$year_start') AS age,b.职级,DATE_FORMAT(a.birthday,'%m') month,
	CASE WHEN a.sex = 2 AND b.职级 < '副处' AND TIMESTAMPDIFF(YEAR, a.birthday, '$year_start') > 55 THEN 0
	WHEN a.sex = 2 AND b.职级 >=  '副处' THEN 1
	WHEN a.sex = 1 AND TIMESTAMPDIFF(YEAR, a.birthday, '$year_start') <= 59 THEN 0
	ELSE 1 END tag
	FROM ALL_USER_TABLE a
	LEFT JOIN (
			SELECT u.* FROM (
				SELECT PersonID,职级 FROM `职级从表` 
				ORDER BY DispOrder DESC 
			) u GROUP BY u.PersonID
	) b ON a.PersonID = b.PersonID 
	WHERE TIMESTAMPDIFF(YEAR, a.birthday, '$year_start') > 54 AND TIMESTAMPDIFF(YEAR, a.birthday, '$year_start') <= 60
) mn GROUP BY mn.mon;
3、得到结果如下:

在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值