请教一下 已知入离职时间如何计算每月离职率
sql吧
全部回复
仅看楼主
level 5
鱼兔籽 楼主
求教
表格字段:工号 入职时间 离职时间 部门
期望得到表格 年月 当期离职率 同期离职率 ytd离职率 同期ytd离职率
当期离职率=离职人数/总人数
ytd离职率=YTD离职人数/avg每月总人数
总人数=月底在职人数+当月离职人数
请吧友们给予帮助 感谢🙏
2021年08月15日 07点08分 1
level 1
存储过程 输入 参数 年月 计算当月离职人数及总人数 得出当期离职率,其他同理。
2021年08月15日 08点08分 2
可以说的详细点么 还不是很懂 YTD的离职率如何计算呢
2021年08月16日 01点08分
level 8
ytd离职率=YTD离职人数/avg每月总人数
这个公式有错误吧?
YTD应该是一年的总数(取往后12个月或者自然年)
avg则是平均数
年离职率=一年内离职人数/平均每月人数(没离职员工一年12个月每个月都要算一次,8月份离职员工1-8月要算进去,8月后不用算)
但是这个算法回导致大于100%的可能性。
2021年08月16日 02点08分 3
level 5
鱼兔籽 楼主
补充一点:
YTD离职率:就是年度累计离职率,
比如现在是8月那就看今年累计到7月的离职率,这个算法是会大于100%的
感谢~
2021年08月16日 05点08分 4
level 8
那就简单了。建一个临时表,只有年月,也就是从今天起拿本月推12个月
然后这个临时表做主表进行子查询:
select
a.年月
,
转小数((select count(1) 人员表 from 今天取月份=离职时间取)) /
(select count(1) 人员表 from 今天取月份 BETWEEN 入职时间取月份 and 离职时间取月份 ) 当期离职率
,
转小数((select count(1) 人员表 from (今天-同期数)取月份=离职时间取)) /
(select count(1) 人员表 from (今天-同期数)取月份 BETWEEN 入职时间取月份 and 离职时间取月份 ) 同期离职率
,
(select sum(转小数((select count(1) 人员表 from a.年月=离职时间取)))
/avg(select count(1) 人员表 from a.年月 BETWEEN 入职时间取月份 and 离职时间取月份 ) from 临时表 a) ytd离职率
,
(select sum(转小数((select count(1) 人员表 from (a.年月-同期数)=离职时间取)))
/avg(select count(1) 人员表 from (a.年月-同期数) BETWEEN 入职时间取月份 and 离职时间取月份 ) from 临时表 a)-同期ytd离职率
2021年08月16日 05点08分 5
这样好像只能出单月的 我希望是出累计到当月的数据
2021年08月16日 09点08分
level 8
对了,如果你用的发帆软的Finereport
用到临时表或者存储过程的情况记得在头尾加上:
SET NOCOUNT on
SET NOCOUNT off
2021年08月16日 05点08分 6
我用的就是Finereport,用的是数据库的表
2021年08月16日 07点08分
@鱼兔籽 5楼不是写了方法么
2021年08月16日 07点08分
@咸鱼初号机💤 正在按照5楼,尝试中,感谢
2021年08月16日 08点08分
level 5
鱼兔籽 楼主
大概输出上述表格的形式
2021年08月16日 09点08分 7
你当我那个是子查询就行了,应该看懂吧
2021年08月16日 10点08分
还没写出来吗?
2021年08月17日 07点08分
@咸鱼初号机💤 当期离职率 和 同期离职率 的【今天取月份】把你表的【年月】变成日期带入不就行了吗?
2021年08月17日 07点08分
ytd离职率 和 同期ytd离职率 则想办法取【年月】的往后12个月就行了
2021年08月17日 07点08分
1