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分