diff --git a/finereport/xiazuan/5_manpower/2_员工满编率明细.sql b/finereport/xiazuan/5_manpower/2_员工满编率明细.sql index 5351e9e..1104114 100644 --- a/finereport/xiazuan/5_manpower/2_员工满编率明细.sql +++ b/finereport/xiazuan/5_manpower/2_员工满编率明细.sql @@ -9,61 +9,161 @@ SELECT ,CASE WHEN SUM(bzs) = 0 THEN 0 ELSE SUM(zzs) / SUM(bzs) END AS RATE -- 月均满编率 FROM ( - SELECT - pq -- 片区 - ,xm -- 项目 - ,zzs -- 在职数 - ,bzs -- 编制数 - FROM ods_hr_view_mbl_d - WHERE ny >= '${p_startym}' - AND ny <= '${p_ym}' - -- 注意 目前会有一个空的排名 是因为佳美物业未做映射 - AND pq NOT IN('89','267') - )A - LEFT JOIN - ( - SELECT - organ_code -- erp片区编码 - ,organ_name -- erp片区名称 - ,hr_organ_id -- hr片区编码 - ,hr_organ_name -- hr片区名称 - ,hr_comm_id -- hr项目id - ,hr_comm_name -- hr项目名称 - FROM dim_organ_mapping - WHERE length(hr_comm_id) > 0 - GROUP BY - organ_code - ,organ_name - ,hr_organ_id - ,hr_organ_name - ,hr_comm_id - ,hr_comm_name - UNION ALL - SELECT - '0000' AS organ_code -- erp片区编码 - ,'' AS organ_name -- erp片区名称 - ,'153' AS hr_organ_id -- hr片区编码 - ,'领悦集团总部' AS hr_organ_name -- hr片区名称 - ,'153' AS hr_comm_id -- hr项目id - ,'领悦集团总部' AS hr_comm_name -- hr项目名称 - FROM dual - )B - ON A.pq = B.hr_organ_id - and A.xm = B.hr_comm_id - LEFT JOIN - ( - SELECT - comm_id - ,organ_code - ,full_rate_target -- 满编率目标 - ,avg_full_rate_target -- 月均满编率目标 - FROM ods_hr_collection_target - WHERE ym = '${p_ym}' - )C - ON A.pq = C.organ_code - AND A.xm = C.comm_id - WHERE 1=1 - ${IF(LEN(p_area)>0," AND B.organ_code IN ('" + p_area +"')", "")} - GROUP BY - B.hr_comm_name - ,B.hr_organ_name \ No newline at end of file + SELECT + A1.pq AS pq + ,A1.xm AS xm + ,A1.zzs AS zzs + ,A1.bzs AS bzs + FROM + ( + SELECT + pq -- 片区 + ,xm + ,ny + ,SUM(CASE WHEN ny >= '2024-10' THEN zzs ELSE 0 end) AS zzs -- 在职数 + ,SUM(bzs) AS bzs -- 编制数 + FROM ods_hr_view_mbl_d + WHERE pq NOT IN ('89','267') -- 这里剔除了佳美物业公司/悦汇发展公司 + GROUP BY pq,ny,xm + UNION ALL + SELECT + T1.organ_code AS pq + ,T1.comm_id AS xm + ,T1.ym AS ny + ,SUM(T1.begin_num ) AS zzs-- 月初在职 + ,0 AS bzs + FROM + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-01' AS ym + ,COALESCE(jan_begin_num,0) AS begin_num -- 月初在职 + FROM ods_hr_history_erp_date + UNION ALL + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-02' AS ym + ,COALESCE(feb_begin_num,0) AS begin_num -- 月初在职 + FROM ods_hr_history_erp_date + UNION ALL + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-03' AS ym + ,COALESCE(mar_begin_num,0) AS begin_num -- 月初在职 + FROM ods_hr_history_erp_date + UNION ALL + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-04' AS ym + ,COALESCE(apr_begin_num,0) AS begin_num -- 月初在职 + FROM ods_hr_history_erp_date + UNION ALL + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-05' AS ym + ,COALESCE(may_begin_num,0) AS begin_num -- 月初在职 + FROM ods_hr_history_erp_date + UNION ALL + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-06' AS ym + ,COALESCE(jun_begin_num,0) AS begin_num -- 月初在职 + FROM ods_hr_history_erp_date + UNION ALL + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-07' AS ym + ,COALESCE(jul_begin_num,0) AS begin_num -- 月初在职 + FROM ods_hr_history_erp_date + UNION ALL + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-08' AS ym + ,COALESCE(aug_begin_num,0) AS begin_num -- 月初在职 + FROM ods_hr_history_erp_date + UNION ALL + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-09' AS ym + ,COALESCE(sep_begin_num,0) AS begin_num -- 月初在职 + FROM ods_hr_history_erp_date + )T1 + GROUP BY T1.ym,T1.organ_code,T1.comm_id + )A1 + WHERE A1.ny >= '${p_startym}' + AND A1.ny <= '${p_ym}' +)A +RIGHT JOIN +( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,hr_organ_id -- hr片区编码 + ,hr_organ_name -- hr片区名称 + ,hr_comm_id -- hr项目id + ,hr_comm_name -- hr项目名称 + FROM dim_organ_mapping + WHERE length(hr_comm_id) > 0 + GROUP BY + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + UNION ALL + SELECT + '0000' AS organ_code -- erp片区编码 + ,'' AS organ_name -- erp片区名称 + ,'153' AS hr_organ_id -- hr片区编码 + ,'领悦集团总部' AS hr_organ_name -- hr片区名称 + ,'153' AS hr_comm_id -- hr项目id + ,'领悦集团总部' AS hr_comm_name -- hr项目名称 + FROM dual +)B +ON A.pq = B.hr_organ_id +and A.xm = B.hr_comm_id +LEFT JOIN +( + SELECT + comm_id + ,organ_code + ,full_rate_target -- 满编率目标 + ,avg_full_rate_target -- 月均满编率目标 + FROM ods_hr_collection_target + WHERE ym = '${p_ym}' +)C +ON A.pq = C.organ_code +AND A.xm = C.comm_id +WHERE 1=1 +${IF(LEN(p_area)>0," AND B.organ_code IN ('" + p_area +"')", "")} +GROUP BY +B.hr_comm_name +,B.hr_organ_name \ No newline at end of file