每月、每周是一个时间段,时间段内的人数是不确定的,一般要取一个时间点
通过以当月最后一天的人数表示当月人数,当周最后一天的人数表示当周人数
人事数据表结构一般有如下字段:
姓名 入职日期 离职日期
那么介于入职和离职之间的就是在职人数
入职离职当天算不算各公司计算各有差异,这里以都算为例,sql如下
select
sum(case when '日期1' between 入职日期 and isnull(离职日期,'2099-12-31') then 1 else 0 end) as 本期人数,
sum(case when '日期2' between 入职日期 and isnull(离职日期,'2099-12-31') then 1 else 0 end) as 上期人数,
sum(case when '日期3' between 入职日期 and isnull(离职日期,'2099-12-31') then 1 else 0 end) as 上上期人数,
......
from
表名
-----------------
将日期123代入sql中计算,根据你要计算周还是月做递减运算
离职日期可能为空,要判空,根据你的数据库修改