SQL员工在职人数
表:emp
字段:id(员工ID) en_dt(入职日期) le_dt(离职日期)
日历表:cal
字段:dt
一个月在职一天,只算1/30个人
只计算2020-03-31
需求:员工在职人数
mont(月份) ps(在职人数)
1 select 2 ms,cast(sum(if(ms = '1',ct/31,if(ms = '2',ct/29,ct/31))) as decimal(16,2)) ps 3 4 from ( 5 -- 聚合后知道在这个月上班的天数 6 select ms,id,count(*) ct from ( 7 -- 在这个月上班的人 8 select month(dt) ms ,id from cal join emp on dt between en_dt and nvl(le_dt,'9999-01-01') 9 ) a group by ms,id 10 ) b
浙公网安备 33010602011771号