目前是在BI上做多个列的动态计算实现的, 但觉得实现方式有点复杂, 而且排序和动态计算某些设置会影响到最终结果显示, 所以想咨询一下各位有没有更好的实现途径~
(平时工作用SQL做数仓模型; Python学过一些, 但尚未在实际工作中使用)
问题明细
离职率公式 = (本月离职人数)/[(本月1号在职总人数+手动选取的本月另一天的在职总人数)/2]
数据集的关键字段
- 入职日期 HIRE_DATE: 如 2021-08-02
- 离职日期 LAST_DAY: 如 2021-09-14
假设"手动选取的本月另一天" 为 a
- a = 2021-09-28
- b = a_ym = 2021-09 (取年月)
两层判断
判断日期 = a 时, 是否在职
LAST_DAY < = a
OR
LAST_DAY IS NULL判断是否当月离职的逻辑
LAST_DAY_yearmonth = b
当前思路
根据上述逻辑, 判断每行是否计入在职/离职, 计入记为1, 不计入记为0 --> 用BI的动态计算runningsum统计所有在职/离职总量 --> 用BI的动态计算movingmax得到在职/离职总量
欢迎各位进行逻辑优化或提供可行方式的建议 感恩