From 24fd7ea0327a1fbc81393c4cf9b7480fbc150364 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Thu, 14 Nov 2024 19:22:13 +0800 Subject: [PATCH] =?UTF-8?q?=E7=A6=BB=E8=81=8C=E4=BA=BA=E6=95=B0=E5=8E=86?= =?UTF-8?q?=E5=8F=B2=E6=95=B0=E6=8D=AE=E8=A1=A5=E9=BD=90=E3=80=81=E6=9D=83?= =?UTF-8?q?=E9=99=90bug=E4=BF=AE=E5=A4=8D=E3=80=81=E8=B4=A2=E5=8A=A1?= =?UTF-8?q?=E5=8F=96=E6=95=B0=E5=8F=A3=E5=BE=84=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- finereport/kanban/mobile/人力_mobile.sql | 2318 +++++++++++++++++ finereport/kanban/pc/人力.sql | 372 ++- .../5_manpower/5_费控人力行政成本填报.sql | 18 +- .../xiazuan/5_manpower/2_员工满编率明细.sql | 10 +- .../5_manpower/4_人力行政成本费率明细.sql | 13 +- finereport/历史数据/今日收费历史数据保留.sql | 15 +- 6 files changed, 2669 insertions(+), 77 deletions(-) create mode 100644 finereport/kanban/mobile/人力_mobile.sql diff --git a/finereport/kanban/mobile/人力_mobile.sql b/finereport/kanban/mobile/人力_mobile.sql new file mode 100644 index 0000000..8ca3e09 --- /dev/null +++ b/finereport/kanban/mobile/人力_mobile.sql @@ -0,0 +1,2318 @@ +-- ====================================== +-- 指标卡_在职人数 +-- ====================================== +SELECT + SUM(zzs) AS SL +FROM +( + SELECT + A1.pq + ,A1.xm + ,SUM(A1.zzs) as zzs + FROM + ( + SELECT + + pq -- 片区 + ,xm -- 项目 + ,ny AS ym + ,zzs -- 在职人数 + FROM ods_hr_view_mbl_d -- + WHERE ny >= '2024-10' + -- 新增历史数据 + UNION ALL + SELECT + T1.organ_code AS pq + ,T1.comm_id AS xm + ,T1.ym AS ym + ,SUM(T1.begin_num ) AS zzrs-- 月初在职 + 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.organ_code, T1.comm_id ,T1.ym + )A1 + WHERE A1.ym = '${p_ym}' + GROUP BY A1.pq,A1.xm + )A + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + ,comm_name + 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 + ,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项目名称 + ,'' AS comm_name + )B + ON A.pq = B.hr_organ_id + and A.xm = b.hr_comm_id +where 1 = 1 +${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +${IF(LEN(p_shop)!=0," and B.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} + +-- ====================================== +-- 指标卡_离职人数 +-- ====================================== + + +SELECT + SUM(lzrs) AS SL +FROM +( + SELECT + A1.pq AS pq + ,A1.xm AS xm + ,SUM(A1.lzrs) AS lzrs + FROM + ( + SELECT pq -- 片区 + , xm -- 项目 + , CONCAT(nd, '-', yd) AS ym -- 年月 + , lzrs -- 离职人数 + FROM ods_hr_view_lzrs_d -- 离职人数 + WHERE LEFT(rq, 7) >= '2024-10' -- 取累计值 10月以后取HR系统 + UNION ALL + SELECT + T1.organ_code AS pq + ,T1.comm_id AS xm + ,T1.ym AS ym + ,SUM(T1.active_quit) + SUM(T1.pass_quit ) AS lzrs + FROM + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-01' AS ym + ,COALESCE(jan_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(jan_pass_quit,0) AS pass_quit -- 被动离职人数 + FROM ods_hr_history_erp_date + UNION ALL + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-02' AS ym + ,COALESCE(feb_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(feb_pass_quit,0) AS pass_quit -- 被动离职人数 + FROM ods_hr_history_erp_date + UNION ALL + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-03' AS ym + ,COALESCE(mar_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(mar_pass_quit,0) AS pass_quit -- 被动离职人数 + FROM ods_hr_history_erp_date + UNION ALL + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-04' AS ym + + ,COALESCE(apr_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(apr_pass_quit,0) AS pass_quit -- 被动离职人数 + FROM ods_hr_history_erp_date + UNION ALL + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-05' AS ym + + ,COALESCE(may_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(may_pass_quit,0) AS pass_quit -- 被动离职人数 + FROM ods_hr_history_erp_date + UNION ALL + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-06' AS ym + ,COALESCE(jun_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(jun_pass_quit,0) AS pass_quit -- 被动离职人数 + FROM ods_hr_history_erp_date + UNION ALL + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-07' AS ym + ,COALESCE(jul_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(jul_pass_quit,0) AS pass_quit -- 被动离职人数 + FROM ods_hr_history_erp_date + UNION ALL + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-08' AS ym + ,COALESCE(aug_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(aug_pass_quit,0) AS pass_quit -- 被动离职人数 + FROM ods_hr_history_erp_date + UNION ALL + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-09' AS ym + ,COALESCE(sep_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(sep_pass_quit,0) AS pass_quit -- 被动离职人数 + FROM ods_hr_history_erp_date + )T1 + GROUP BY T1.organ_code, T1.comm_id ,T1.ym + )A1 + WHERE left(A1.ym,4) =left('${p_ym}',4) + AND left(A1.ym,7) <= '${p_ym}' + AND pq not in('89','267') -- 排除了佳美、悦汇 + GROUP BY A1.pq,A1.xm + )A + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + ,comm_name + 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 + ,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项目名称 + ,'' AS comm_name + )B + ON A.pq = B.hr_organ_id + and A.xm = B.hr_comm_id +where 1 = 1 +${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_shop)!=0," and B.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} + + + +-- ====================================== +-- 指标卡_人力行政成本 +-- ====================================== + +SELECT +coalesce(SUM(CASE WHEN A.cost_type = '人力成本' THEN A.actual_amount ELSE 0 END),0) AS lc_total_fee -- 人力成本费用 +,coalesce(SUM(CASE WHEN A.cost_type = '行政成本' THEN A.actual_amount ELSE 0 END),0) AS ac_total_fee -- 行政成本费用 +FROM +( + SELECT + * + FROM dw.ods_cost_collection_lc_ac + WHERE left(ym,4) = left('${p_ym}',4) + AND ym <= '${p_ym}' +)A + LEFT JOIN +( + SELECT + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + ,comm_name + 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 + ,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项目名称 + ,'' AS comm_name +)B +ON A.organ_code = B.organ_code +and A.comm_id = B.hr_comm_id +WHERE 1 = 1 +${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +${IF(LEN(p_shop)!=0," and B.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} + + +-- ====================================== +-- 指标卡_离职人数离职率/目标值 +-- ====================================== + +-- 整体 +${IF(LEN(p_area) = 0,"", "/*")} + +SELECT +sum(lz_rate) AS lz_rate +,sum(lz_rate_target) AS lz_rate_target +,CASE WHEN sum(lz_rate_target) = 0 THEN 0 + ELSE sum(lz_rate) / sum(lz_rate_target) END AS target_rate +FROM +( +SELECT +CASE WHEN SUM(zzrs) = 0 THEN 0 + ELSE SUM(zlzrs) / SUM(zzrs) + END AS lz_rate -- 离职率 +,0 AS lz_rate_target -- 离职率目标 +FROM +( + SELECT + SUM(A1.zzrs) AS zzrs + ,SUM(A1.zlzrs) AS zlzrs + FROM + ( + SELECT + LEFT(rq,7) AS ny + ,zzrs -- 当天在职人数 + ,zlzrs -- 当天总离职人数 + FROM ods_hr_view_lzbl_d + WHERE LEFT(rq,7) >= '2024-10' + AND pq not in('89','267') -- 排除了佳美、悦汇 + UNION ALL + SELECT + T1.ym AS ny + ,SUM(T1.begin_num) AS zzrs + ,SUM(T1.active_quit) + SUM(T1.pass_quit ) AS zlzrs + FROM + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-01' AS ym + ,COALESCE(jan_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(jan_pass_quit,0) AS pass_quit -- 被动离职人数 + ,COALESCE(sep_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_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(feb_pass_quit,0) AS pass_quit -- 被动离职人数 + ,COALESCE(sep_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_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(mar_pass_quit,0) AS pass_quit -- 被动离职人数 + ,COALESCE(sep_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_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(apr_pass_quit,0) AS pass_quit -- 被动离职人数 + ,COALESCE(sep_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_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(may_pass_quit,0) AS pass_quit -- 被动离职人数 + ,COALESCE(sep_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_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(jun_pass_quit,0) AS pass_quit -- 被动离职人数 + ,COALESCE(sep_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_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(jul_pass_quit,0) AS pass_quit -- 被动离职人数 + ,COALESCE(sep_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_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(aug_pass_quit,0) AS pass_quit -- 被动离职人数 + ,COALESCE(sep_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_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(sep_pass_quit,0) AS pass_quit -- 被动离职人数 + ,COALESCE(sep_begin_num,0) AS begin_num -- 月初在职 + FROM ods_hr_history_erp_date + )T1 + GROUP BY T1.ym + )A1 + WHERE left(A1.ny,4) = left('${p_ym}',4) + AND A1.ny <= '${p_ym}' +)A +UNION ALL +SELECT +0 AS lz_rate +,lz_rate_target -- 离职率目标 +FROM ods_hr_collection_target_overall +WHERE ym = '${p_ym}' +)T + + +${IF(LEN(p_area) = 0,"", "*/")} + +-- 片区 +${IF(LEN(p_area) > 0,"", "/*")} + +SELECT + CASE WHEN sum(zzrs) = 0 THEN 0 + ELSE SUM(zlzrs) / sum(zzrs) + END AS lz_rate +,sum(C.lz_rate_target) AS lz_rate_target +,CASE WHEN (sum(zzrs) = 0 OR sum(lz_rate_target)= 0) THEN 0 + ELSE (SUM(zlzrs) / sum(zzrs)) / sum(lz_rate_target) + END AS target_rate +FROM +( + SELECT + A1.pq AS pq + ,A1.zzrs AS zzrs + ,A1.zlzrs AS zlzrs + FROM + ( + SELECT + LEFT(rq, 7) AS ny + , pq -- 片区 + , SUM(zzrs) AS zzrs-- 当天在职人数 + , SUM(zlzrs) AS zlzrs -- 当天总离职人数 + FROM ods_hr_view_lzbl_d + WHERE LEFT(rq, 7) >= '2024-10' + AND pq NOT IN ('89', '267') -- 排除了佳美、悦汇 + -- 排除了: + -- 89:佳美物业公司 + -- 153:领悦集团总部 + -- 267:悦汇发展公司 + GROUP BY pq,LEFT(rq, 7) + UNION ALL + SELECT T1.ym AS ny + , T1.organ_code AS pq + , SUM(T1.begin_num) AS zzrs + , SUM(T1.active_quit) + SUM(T1.pass_quit) AS zlzrs + FROM (SELECT organ_code + , organ_name + , comm_id + , comm_name + , '2024-01' AS ym + , COALESCE(jan_active_quit, 0) AS active_quit -- 主动离职人数 + , COALESCE(jan_pass_quit, 0) AS pass_quit -- 被动离职人数 + , COALESCE(sep_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_active_quit, 0) AS active_quit -- 主动离职人数 + , COALESCE(feb_pass_quit, 0) AS pass_quit -- 被动离职人数 + , COALESCE(sep_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_active_quit, 0) AS active_quit -- 主动离职人数 + , COALESCE(mar_pass_quit, 0) AS pass_quit -- 被动离职人数 + , COALESCE(sep_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_active_quit, 0) AS active_quit -- 主动离职人数 + , COALESCE(apr_pass_quit, 0) AS pass_quit -- 被动离职人数 + , COALESCE(sep_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_active_quit, 0) AS active_quit -- 主动离职人数 + , COALESCE(may_pass_quit, 0) AS pass_quit -- 被动离职人数 + , COALESCE(sep_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_active_quit, 0) AS active_quit -- 主动离职人数 + , COALESCE(jun_pass_quit, 0) AS pass_quit -- 被动离职人数 + , COALESCE(sep_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_active_quit, 0) AS active_quit -- 主动离职人数 + , COALESCE(jul_pass_quit, 0) AS pass_quit -- 被动离职人数 + , COALESCE(sep_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_active_quit, 0) AS active_quit -- 主动离职人数 + , COALESCE(aug_pass_quit, 0) AS pass_quit -- 被动离职人数 + , COALESCE(sep_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_active_quit, 0) AS active_quit -- 主动离职人数 + , COALESCE(sep_pass_quit, 0) AS pass_quit -- 被动离职人数 + , COALESCE(sep_begin_num, 0) AS begin_num -- 月初在职 + FROM ods_hr_history_erp_date) T1 + GROUP BY T1.ym, T1.organ_code + )A1 + WHERE left(A1.ny,4) = left('${p_ym}',4) + AND A1.ny <= '${p_ym}' + )A + LEFT JOIN + ( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,hr_organ_id -- hr片区编码 + ,hr_organ_name -- hr片区名称 + FROM dim_organ_mapping + WHERE length(hr_organ_id) > 0 + GROUP BY + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + + UNION ALL + SELECT + '0000' AS organ_code -- erp片区编码 + ,'' AS organ_name -- erp片区名称 + ,'153' AS hr_organ_id -- hr片区编码 + ,'领悦集团总部' AS hr_organ_name -- hr片区名称 + )B + ON A.pq = B.hr_organ_id +LEFT JOIN + ( + SELECT + organ_code + ,lz_rate_target + FROM ods_hr_collection_target_organ + WHERE ym = '${p_ym}' + )C + ON a.pq = c.organ_code +where 1 = 1 +${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + +${IF(LEN(p_area) > 0,"", "*/")} + + +-- ====================================== +-- 指标卡_人力行政成本费率/目标值 +-- ====================================== + +-- 整体 +${IF(LEN(p_area)=0,"", "/*")} + +SELECT +SUM(T.lc_fee_rate) AS lc_fee_rate -- 人力成本费率 +,SUM(T.lc_fee_rate_target) AS lc_fee_rate_target -- 人力成本费率目标 +,CASE WHEN sum(T.lc_fee_rate_target) = 0 THEN 0 + ELSE SUM(T.lc_fee_rate) / sum(T.lc_fee_rate_target) END AS lc_target_rate -- 人力成本费率目标占比 +,SUM(T.ac_fee_rate) AS ac_fee_rate -- 行政成本费率 +,SUM(T.ac_fee_rate_target) AS ac_fee_rate_target -- 行政成本费率目标值 +,CASE WHEN sum(T.ac_fee_rate_target) = 0 THEN 0 + ELSE sum(T.ac_fee_rate) / sum(T.ac_fee_rate_target) END AS ac_target_rate -- 行政成本费率目标占比 +FROM +( +SELECT +coalesce(SUM(CASE WHEN cost_type = '人力成本' THEN actual_amount ELSE 0 END),0) + / (SELECT SUM(index_income_fact) FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month = '${p_ym}') AS lc_fee_rate -- 人力成本费率 +,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END),0) + / (SELECT SUM(index_income_fact) FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month = '${p_ym}') AS ac_fee_rate -- 行政成本费率 +,0 AS lc_fee_rate_target -- 人力成本费率 +,0 AS ac_fee_rate_target -- 行政成本费率 +from dw.ods_cost_collection_lc_ac +WHERE left(ym,4) = left('${p_ym}',4) + AND ym <= '${p_ym}' +UNION ALL +SELECT +0 AS lc_fee_rate +,0 AS ac_fee_rate +,lc_fee_rate_target -- 人力成本费率 +,ac_fee_rate_target -- 行政成本费率 +FROM ods_hr_collection_target_overall +WHERE ym = '${p_ym}' +)T +${IF(LEN(p_area)=0,"", "*/")} + +-- 片区 +${IF(LEN(p_area)>0,"", "/*")} +SELECT + T.lc_fee_rate AS lc_fee_rate -- 人力成本费率 + ,T.lc_fee_rate_target AS lc_fee_rate_target -- 人力成本费率目标 + ,CASE WHEN T.lc_fee_rate_target = 0 THEN 0 + ELSE T.lc_fee_rate / T.lc_fee_rate_target END AS lc_target_rate -- 人力成本费率目标占比 + ,T.ac_fee_rate AS ac_fee_rate -- 行政成本费率 + ,T.ac_fee_rate_target AS ac_fee_rate_target -- 行政成本费率目标值 + ,CASE WHEN T.ac_fee_rate_target = 0 THEN 0 + ELSE T.ac_fee_rate / T.ac_fee_rate_target END AS ac_target_rate -- 行政成本费率目标占比 +FROM +( +SELECT + A.lc_total_fee / B.index_income_fact AS lc_fee_rate + ,A.ac_total_fee / B.index_income_fact AS ac_fee_rate + ,C.lc_fee_rate_target AS lc_fee_rate_target -- 人力成本费率 + ,C.ac_fee_rate_target AS ac_fee_rate_target -- 行政成本费率 + FROM + ( + -- 费控人力行政成本填报 + SELECT + organ_code + ,coalesce(SUM(CASE WHEN cost_type = '人力成本' THEN actual_amount ELSE 0 END),0) AS lc_total_fee -- 人力成本费用 + ,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END),0) AS ac_total_fee -- 行政成本费用 + from dw.ods_cost_collection_lc_ac + WHERE left(ym,4) = left('${p_ym}',4) + AND ym <= '${p_ym}' + GROUP BY organ_code + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + organ_code + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month = '${p_ym}' + GROUP BY organ_code + )B + ON A.organ_code = B.organ_code + LEFT JOIN + ( + SELECT + organ_code + ,lc_fee_rate_target -- 人力成本费率目标 + ,ac_fee_rate_target -- 行政成本费率目标 + FROM ods_hr_collection_target_organ + WHERE ym = '${p_ym}' + )C + ON A.organ_code = C.organ_code + WHERE 1 = 1 + ${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +)T +${IF(LEN(p_area)>0,"", "*/")} + + + +-- ====================================== +-- 员工满编率柱状图 +-- ====================================== + +SELECT + yd + ,SUM(A.zzs) AS zzs -- 在职数 + ,SUM(A.bzs) AS bzs -- 编制数 + ,CASE WHEN sum(A.bzs) = 0 THEN 0 + ELSE sum(A.zzs) / sum(A.bzs) END AS rate -- 满编率 +FROM +( + SELECT + A1.yd -- 月度 + ,A1.ny + ,A1.pq -- 片区 + ,A1.xm -- 项目 + ,A1.zzs -- 在职数 + ,A1.bzs -- 编制数 + FROM + ( + SELECT + right(ny,2) AS yd -- 月度 + ,ny + ,pq -- 片区 + ,xm -- 项目 + ,CASE WHEN ny >= '2024-10' THEN zzs ELSE 0 end AS zzs-- 在职数 + ,bzs -- 编制数 + FROM ods_hr_view_mbl_d + WHERE left(ny,4) = LEFT('${p_ym}', 4) + AND pq NOT IN ('89', '267') -- 排除了佳美、悦汇 + UNION ALL + SELECT + right(T1.ym,2) AS yd + ,T1.ym AS ny + ,T1.organ_code AS pq + ,T1.comm_id AS xm + ,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.organ_code, T1.comm_id ,T1.ym + )A1 + WHERE left(A1.ny,4) = LEFT('${p_ym}', 4) + +)A +LEFT JOIN +( + SELECT + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + ,comm_name + 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 + ,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项目名称 + ,'' AS comm_name +)B +ON A.pq = B.hr_organ_id +and A.xm = b.hr_comm_id +where 1 = 1 +${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +${IF(LEN(p_shop)!=0," and B.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} + +group by +yd +order by +CASE WHEN yd = '01' THEN 'a' + WHEN yd = '02' THEN 'b' + WHEN yd = '03' THEN 'c' + WHEN yd = '04' THEN 'd' + WHEN yd = '05' THEN 'e' + WHEN yd = '06' THEN 'f' + WHEN yd = '07' THEN 'g' + WHEN yd = '08' THEN 'h' + WHEN yd = '09' THEN 'i' + WHEN yd = '10' THEN 'j' + WHEN yd = '11' THEN 'k' + WHEN yd = '12' THEN 'l' END + + +-- ====================================== +-- 员工满编率排名 +-- ====================================== +-- 片区排名 + +${IF(LEN(p_area)=0,"", "/*")} +SELECT +T1.organ_comm AS organ_comm +,ROW_NUMBER() OVER(ORDER BY T1.RATE DESC) 排名 +,T1.rate +,T1.full_rate_target AS target_rate +FROM + ( + SELECT + B.hr_organ_name AS organ_comm + ,CASE WHEN SUM(bzs) = 0 THEN 0 ELSE SUM(A.zzs) / SUM(A.bzs) END AS RATE + ,SUM(C.full_rate_target) AS full_rate_target + FROM + ( + SELECT + A1.pq AS pq + ,A1.zzs AS zzs + ,A1.bzs AS bzs + FROM + ( + SELECT + pq -- 片区 + ,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 + UNION ALL + SELECT + T1.organ_code AS pq + ,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 + )A1 + WHERE A1.ny = '${p_ym}' + )A + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + FROM dim_organ_mapping + WHERE length(hr_organ_id) > 0 + GROUP BY + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + + UNION ALL + SELECT + '0000' AS organ_code -- erp片区编码 + ,'' AS organ_name -- erp片区名称 + ,'153' AS hr_organ_id -- hr片区编码 + ,'领悦集团总部' AS hr_organ_name -- hr片区名称 + )B + ON A.pq = B.hr_organ_id + LEFT JOIN + ( + SELECT + organ_code + ,full_rate_target -- 满编率目标 + FROM ods_hr_collection_target_organ + WHERE ym = '${p_ym}' + )C + ON B.organ_code = C.organ_code + where 1 = 1 + ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + GROUP BY + B.hr_organ_name + )T1 +${IF(LEN(p_area)=0,"", "*/")} + +-- 项目排名 +${IF(LEN(p_area) > 0,"", "/*")} +SELECT + T1.organ_comm AS organ_comm + ,ROW_NUMBER() OVER(ORDER BY T1.RATE DESC) 排名 + ,T1.rate + ,T1.full_rate_target AS target_rate +FROM +( + SELECT + B.hr_comm_name AS organ_comm + ,CASE WHEN SUM(bzs) = 0 THEN 0 ELSE SUM(A.zzs) / SUM(A.bzs) END AS RATE + ,SUM(C.full_rate_target) AS full_rate_target + FROM + ( + 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_ym}' + )A + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + ,comm_name + 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 + ,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项目名称 + ,'' AS comm_name + )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 -- 满编率目标 + FROM ods_hr_collection_target + WHERE ym = '${p_ym}' + )C + ON B.organ_code = C.organ_code + AND B.hr_comm_id = C.comm_id + WHERE 1=1 + ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +${IF(LEN(p_shop)!=0," and B.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} + GROUP BY + B.hr_comm_name +)T1 + +${IF(LEN(p_area)>0,"", "*/")} + + +-- ====================================== +-- 员工离职原因占比 +-- ====================================== +SELECT +A.lzlx AS lzlx -- 离职类型id +,A.lzlxname AS lzlxname -- 离职类型名称 +,A.lzyy AS lzyy -- 离职原因id +,A.lzyyname AS lzyyname -- 离职原因名称 +,A.lzrs AS lzrs -- 离职人数 +FROM +( + SELECT + pq -- 片区 + ,xm -- 项目 + ,lzlx -- 离职类型id + ,lzlxname -- 离职类型名称 + ,lzyy -- 离职原因id + ,lzyyname -- 离职原因名称 + ,lzrs -- 离职人数 + FROM ods_hr_view_lzrs_fl_d + WHERE LEFT(rq,7) = '${p_ym}' +)A +LEFT JOIN +( + SELECT + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + ,comm_name + 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 + ,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项目名称 + ,'' AS comm_name +)B +ON A.pq = B.hr_organ_id +and A.xm = B.hr_comm_id +where 1 = 1 +${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +${IF(LEN(p_shop)!=0," and B.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} + +-- ====================================== +-- 离职率排名 +-- ====================================== + +-- 片区 +${IF(LEN(p_area)=0,"", "/*")} +SELECT + T.hr_organ_name AS hr_organ_name + ,T.lz_rate AS lz_rate + ,T.lz_rate_target AS lz_rate_target + ,ROW_NUMBER() OVER(ORDER BY T.lz_rate desc) AS 排名 +FROM + ( + SELECT + B.hr_organ_name AS hr_organ_name + ,CASE WHEN sum(A.zzrs) = 0 THEN 0 + ELSE SUM(A.zlzrs) / sum(zzrs) + END AS lz_rate -- 离职率 + ,SUM(C.lz_rate_target) AS lz_rate_target + FROM + ( + + SELECT + T.pq as pq + ,SUM(T.zzrs) AS zzrs + ,SUM(T.zlzrs) AS zlzrs + FROM + ( + SELECT + pq -- 片区 + ,LEFT(rq,7) AS ym + ,SUM(CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END) AS zzrs -- 在职人数 + ,SUM(zlzrs) AS zlzrs -- 当天总离职人数 + FROM ods_hr_view_lzbl_d + -- 排除了: + -- 89:佳美物业公司 + -- 267:悦汇发展公司 + GROUP BY pq,LEFT(rq,7) + UNION ALL + SELECT + T1.organ_code AS pq + ,T1.ym AS ym + ,(SUM(T1.begin_num ) + SUM(T1.end_num)) / 2 AS zzrs-- 在职人数 + ,SUM(T1.active_quit) + SUM(T1.pass_quit ) AS zlzrs + FROM + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-01' AS ym + ,COALESCE(jan_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 + ,COALESCE(jan_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(jan_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(feb_end_num,0) AS end_num -- 月末在职 + ,COALESCE(feb_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(feb_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(mar_end_num,0) AS end_num -- 月末在职 + ,COALESCE(mar_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(mar_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(apr_end_num,0) AS end_num -- 月末在职 + ,COALESCE(apr_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(apr_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(may_end_num,0) AS end_num -- 月末在职 + ,COALESCE(may_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(may_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(jun_end_num,0) AS end_num -- 月末在职 + ,COALESCE(jun_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(jun_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(jul_end_num,0) AS end_num -- 月末在职 + ,COALESCE(jul_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(jul_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(aug_end_num,0) AS end_num -- 月末在职 + ,COALESCE(aug_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(aug_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(sep_end_num,0) AS end_num -- 月末在职 + ,COALESCE(sep_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(sep_pass_quit,0) AS pass_quit -- 被动离职人数 + FROM ods_hr_history_erp_date + )T1 + GROUP BY T1.organ_code ,T1.ym + )T + WHERE LEFT(ym,4) = left('${p_ym}',4) + AND LEFT(ym,7) <= '${p_ym}' + AND pq not in('89','267') -- 排除了佳美、悦汇 + group by T.pq + )A + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + FROM dim_organ_mapping + WHERE length(hr_organ_id) > 0 + GROUP BY + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + UNION ALL + SELECT + '0000' AS organ_code -- erp片区编码 + ,'' AS organ_name -- erp片区名称 + ,'153' AS hr_organ_id -- hr片区编码 + ,'领悦集团总部' AS hr_organ_name -- hr片区名称 + )B + ON A.pq = B.hr_organ_id + LEFT JOIN + ( + SELECT + organ_code + ,lz_rate_target -- 离职率目标 + FROM ods_hr_collection_target_organ + WHERE ym = '${p_ym}' + )C + ON B.organ_code = C.organ_code + where 1 = 1 + ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + + GROUP BY + B.hr_organ_name + )T +${IF(LEN(p_area)=0,"", "*/")} + + +${IF(LEN(p_area)>0,"", "/*")} +-- 项目 +SELECT + T.hr_organ_name AS hr_organ_name + ,T.lz_rate AS lz_rate -- 离职率 + ,T.lz_rate_target AS lz_rate_target -- 离职率目标 + ,ROW_NUMBER() OVER(ORDER BY T.lz_rate desc) AS 排名 +FROM + ( + SELECT + B.hr_comm_name AS hr_organ_name + ,CASE WHEN SUM(A.zzrs) = 0 THEN 0 + ELSE SUM(A.zlzrs) / SUM(A.zzrs) + END AS lz_rate + ,SUM(C.lz_rate_target) AS lz_rate_target + + FROM + ( + SELECT + T.pq as pq + ,T.xm AS xm + ,SUM(T.zzrs) AS zzrs + ,sum(T.zlzrs) AS zlzrs + FROM + ( + SELECT + pq -- 片区 + ,xm -- 项目 + ,LEFT(rq,7) AS ym + ,SUM(CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END) AS zzrs -- 在职人数 + ,SUM(zlzrs) AS zlzrs -- 当天总离职人数 + FROM ods_hr_view_lzbl_d + GROUP BY pq, xm, rq + UNION ALL + + SELECT + T1.organ_code AS pq + ,T1.comm_id AS xm + ,T1.ym AS ym + ,(SUM(T1.begin_num ) + SUM(T1.end_num)) / 2 AS zzrs-- 在职人数 + ,SUM(T1.active_quit) + SUM(T1.pass_quit ) AS zlzrs + FROM + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-01' AS ym + ,COALESCE(jan_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 + ,COALESCE(jan_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(jan_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(feb_end_num,0) AS end_num -- 月末在职 + ,COALESCE(feb_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(feb_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(mar_end_num,0) AS end_num -- 月末在职 + ,COALESCE(mar_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(mar_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(apr_end_num,0) AS end_num -- 月末在职 + ,COALESCE(apr_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(apr_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(may_end_num,0) AS end_num -- 月末在职 + ,COALESCE(may_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(may_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(jun_end_num,0) AS end_num -- 月末在职 + ,COALESCE(jun_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(jun_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(jul_end_num,0) AS end_num -- 月末在职 + ,COALESCE(jul_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(jul_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(aug_end_num,0) AS end_num -- 月末在职 + ,COALESCE(aug_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(aug_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(sep_end_num,0) AS end_num -- 月末在职 + ,COALESCE(sep_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(sep_pass_quit,0) AS pass_quit -- 被动离职人数 + FROM ods_hr_history_erp_date + )T1 + GROUP BY T1.organ_code, T1.comm_id ,T1.ym + )T + WHERE LEFT(ym,4) = left('${p_ym}',4) + AND LEFT(ym,7) <= '${p_ym}' + AND pq not in('89','267') -- 排除了佳美、悦汇 + AND (pq is NOT NULL OR xm IS NOT NULL ) + group by T.pq,T.xm + )A + LEFT JOIN + ( SELECT + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + ,comm_id + ,comm_name + 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 + ,comm_name + ,comm_id + 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项目名称 + ,'' AS comm_id + ,'' AS comm_name + )B + ON A.pq = B.hr_organ_id + and A.xm = b.hr_comm_id + LEFT JOIN + ( + SELECT + comm_id + ,organ_code + ,lz_rate_target -- 离职率目标 + FROM ods_hr_collection_target + WHERE ym = '${p_ym}' + )C + ON B.organ_code = C.organ_code + AND B.hr_comm_id = C.comm_id + where 1 = 1 + ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_shop)!=0," and B.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} + + GROUP BY + B.hr_comm_name + )T +${IF(LEN(p_area)>0,"", "*/")} + + +-- ====================================== +-- 人力行政成本费率柱状图 +-- ====================================== + +${if(p_type='人力',"","/*")} +SELECT + T1.yr_month AS yr_month + ,'人力成本' AS name + ,'人力成本费率' AS name_rate + ,T1.lc_total_fee AS total_fee -- 人力成本 + ,T1.index_income_fact AS index_income_fact -- 实际收入 + ,T1.lc_total_fee / T1.index_income_fact AS fee_rate -- 人力成本费率 +FROM +( + SELECT + A.ym AS yr_month + , SUM(A.lc_total_fee) AS lc_total_fee + , SUM(B.index_income_fact) AS index_income_fact + FROM + ( + SELECT + A.ym AS ym + ,A.organ_code AS organ_code + ,A1.comm_id AS comm_id -- erp项目 匹配财务收入填报 + ,A1.hr_comm_name AS hr_comm_name -- erp项目,用作权限控制 + ,A.lc_total_fee AS lc_total_fee + FROM + ( + -- 费控人力行政成本填报 + SELECT organ_code + , comm_id + , ym + , COALESCE(SUM(CASE WHEN cost_type = '人力成本' THEN actual_amount ELSE 0 END), + 0) AS lc_total_fee -- 人力成本费用 + , COALESCE(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END), + 0) AS ac_total_fee -- 行政成本费用 + FROM dw.ods_cost_collection_lc_ac + WHERE LEFT(ym, 4) = LEFT('${p_ym}', 4) + AND ym <= '${p_ym}' + GROUP BY organ_code, ym, comm_id) A + LEFT JOIN + (SELECT organ_code + , organ_name + , comm_id + , comm_name + , hr_organ_id + , hr_organ_name + , hr_comm_id + , hr_comm_name + FROM dim_organ_mapping + WHERE LENGTH(hr_comm_id) > 0 + GROUP BY organ_code + , organ_name + , comm_id + , comm_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片区名称 + , '' AS comm_id + , '' AS comm_name + , '153' AS hr_organ_id -- hr片区编码 + , '领悦集团总部' AS hr_organ_name -- hr片区名称 + , '153' AS hr_comm_id -- hr项目id + , '领悦集团总部' AS hr_comm_name -- hr项目名称 + ) A1 + ON A.organ_code = A1.organ_code + AND A.comm_id = A1.hr_comm_id + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + yr_month + ,organ_code + ,comm_id + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND LEFT(yr_month,4) = left('${p_ym}',4) + GROUP BY + yr_month + ,organ_code + ,comm_id + )B + ON A.organ_code = B.organ_code + AND A.ym = B.yr_month + AND A.comm_id = B.comm_id + WHERE 1 = 1 + ${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_shop)!=0," and A.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} + GROUP BY A.ym +)T1 +ORDER BY T1.yr_month + +${if(p_type='人力',"","*/")} + +${if(p_type='行政',"","/*")} +SELECT + T1.yr_month AS yr_month + ,'行政成本' AS name + ,'行政成本费率' AS name_rate + ,T1.ac_total_fee AS total_fee -- 行政成本 + ,T1.index_income_fact AS index_income_fact -- 实际收入 + ,T1.ac_total_fee / T1.index_income_fact AS fee_rate -- 人力成本费率 +FROM +( + SELECT + A.ym AS yr_month + ,SUM(A.ac_total_fee) AS ac_total_fee -- 行政成本 + ,SUM(B.index_income_fact) AS index_income_fact -- 实际收入 + FROM + ( + SELECT + A.ym AS ym + ,A.organ_code AS organ_code + ,A1.comm_id AS comm_id -- erp项目 匹配财务收入填报 + ,A1.hr_comm_name AS hr_comm_name -- hr项目,用作权限控制 + ,A.ac_total_fee AS ac_total_fee + FROM + ( -- 费控人力行政成本填报 + SELECT organ_code + , ym + , comm_id + , COALESCE(SUM(CASE WHEN cost_type = '人力成本' THEN actual_amount ELSE 0 END), + 0) AS lc_total_fee -- 人力成本费用 + , COALESCE(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END), + 0) AS ac_total_fee -- 行政成本费用 + FROM dw.ods_cost_collection_lc_ac + WHERE LEFT(ym, 4) = LEFT('${p_ym}', 4) + AND ym <= '${p_ym}' + GROUP BY organ_code, ym, comm_id + ) A + LEFT JOIN + ( + SELECT organ_code + , organ_name + , comm_id + , comm_name + , hr_organ_id + , hr_organ_name + , hr_comm_id + , hr_comm_name + FROM dim_organ_mapping + WHERE LENGTH(hr_comm_id) > 0 + GROUP BY organ_code + , organ_name + , comm_id + , comm_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片区名称 + , '' AS comm_id + , '' AS comm_name + , '153' AS hr_organ_id -- hr片区编码 + , '领悦集团总部' AS hr_organ_name -- hr片区名称 + , '153' AS hr_comm_id -- hr项目id + , '领悦集团总部' AS hr_comm_name -- hr项目名称 + ) A1 + ON A.organ_code = A1.organ_code + AND A.comm_id = A1.hr_comm_id + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + yr_month + ,organ_code + ,comm_id + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND LEFT(yr_month,4) = left('${p_ym}',4) + GROUP BY + yr_month + ,organ_code + ,comm_id + )B + ON A.ym = B.yr_month + AND A.organ_code = B.organ_code + AND A.comm_id = B.comm_id + WHERE 1=1 + ${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_shop)!=0," and A.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} + GROUP BY A.ym +)T1 +ORDER BY T1.yr_month +${if(p_type='行政',"","*/")} + + +-- ====================================== +-- 人力行政成本费率排名 +-- ====================================== + +-- 片区排名 + +${if(and(len(p_area)=0,p_type='人力')," -- 片区排名开始", "/*")} +SELECT + A.organ_name AS organ_comm_name + ,A.lc_total_fee AS actual_cost -- 人力成本 + ,B.index_income_fact AS index_income_fact -- 实际收入 + ,ROW_NUMBER() OVER (ORDER BY A.lc_total_fee / B.index_income_fact DESC ) AS 排名 -- 费率排名 + ,A.lc_total_fee / B.index_income_fact AS fee_rate -- 人力成本费率 + ,C.lc_fee_rate_target AS target_fee_rate -- 费率目标 + FROM + ( -- 费控人力行政成本填报 + SELECT + organ_code + ,organ_name + ,coalesce(SUM(CASE WHEN cost_type = '人力成本' THEN actual_amount ELSE 0 END),0) AS lc_total_fee -- 人力成本费用 + ,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END),0) AS ac_total_fee -- 行政成本费用 + from dw.ods_cost_collection_lc_ac + WHERE left(ym,4) = left('${p_ym}',4) + AND ym <= '${p_ym}' + ${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + GROUP BY organ_code,organ_name + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + organ_code + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + ,SUM(index_income_target) AS index_income_target -- 收入目标 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month = '${p_ym}' + GROUP BY + organ_code + )B + ON A.organ_code = B.organ_code + LEFT JOIN + ( + SELECT + organ_code + ,lc_fee_rate_target -- 人力成本费率目标 + ,ac_fee_rate_target -- 行政成本费率目标 + FROM ods_hr_collection_target_organ + WHERE ym = '${p_ym}' + )C + ON A.organ_code = C.organ_code + +${if(and(len(p_area)=0,p_type='人力')," -- 片区排名开始", "*/")} + + +${if(and(len(p_area)=0,p_type='行政')," -- 片区排名开始", "/*")} + +SELECT + A.organ_name AS organ_comm_name + ,A.ac_total_fee AS actual_cost -- 成本 + ,B.index_income_fact AS index_income_fact -- 实际收入 + ,ROW_NUMBER() OVER (ORDER BY A.ac_total_fee / B.index_income_fact DESC ) AS 排名 -- 费率排名 + ,A.lc_total_fee / B.index_income_fact AS fee_rate -- 行政成本费率 + ,C.ac_fee_rate_target AS target_fee_rate -- 费率目标 + FROM + ( -- 费控人力行政成本填报 + SELECT + organ_code + ,organ_name + ,coalesce(SUM(CASE WHEN cost_type = '人力成本' THEN actual_amount ELSE 0 END),0) AS lc_total_fee -- 人力成本费用 + ,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END),0) AS ac_total_fee -- 行政成本费用 + from dw.ods_cost_collection_lc_ac + WHERE left(ym,4) = left('${p_ym}',4) + AND ym <= '${p_ym}' + ${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + GROUP BY organ_code,organ_name + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + organ_code + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month = '${p_ym}' + GROUP BY + organ_code + )B + ON A.organ_code = B.organ_code + LEFT JOIN + ( + SELECT + organ_code + ,lc_fee_rate_target -- 人力成本费率目标 + ,ac_fee_rate_target -- 行政成本费率目标 + FROM ods_hr_collection_target_organ + WHERE ym = '${p_ym}' + )C + ON A.organ_code = C.organ_code +${if(and(len(p_area)=0,p_type='行政')," -- 片区排名开始", "*/")} + + + +-- 项目排名 + +${if(and(len(p_area)>0,p_type='人力')," -- 片区排名开始", "/*")} +SELECT + T.organ_comm_name AS organ_comm_name + ,T.actual_cost AS actual_cost + ,T.index_income_fact AS index_income_fact -- 实际收入 + ,ROW_NUMBER() OVER (ORDER BY T.fee_rate DESC ) AS 排名 -- 费率排名 + ,T.fee_rate AS fee_rate + ,T. target_fee_rate AS target_fee_rate -- 费率目标 +FROM +( + SELECT + A.comm_name AS organ_comm_name + ,SUM(A.lc_total_fee) AS actual_cost -- 成本 + ,SUM(B.index_income_fact) AS index_income_fact -- 实际收入 + ,CASE WHEN sum(B.index_income_fact) = 0 THEN 0 + ELSE SUM(A.lc_total_fee) / SUM(B.index_income_fact) END AS fee_rate + ,SUM(C.lc_fee_rate_target) AS target_fee_rate -- 费率目标 + FROM + ( SELECT + A1.organ_code AS organ_code + ,A1.comm_id AS comm_id + ,A1.comm_name AS comm_name + ,A1.lc_total_fee AS lc_total_fee + ,A2.comm_id AS erp_comm_id + FROM + ( + -- 费控人力行政成本填报 + SELECT organ_code + , comm_id + , comm_name + , COALESCE(SUM(CASE WHEN cost_type = '人力成本' THEN actual_amount ELSE 0 END), + 0) AS lc_total_fee -- 人力成本费用 + , COALESCE(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END), + 0) AS ac_total_fee -- 行政成本费用 + FROM dw.ods_cost_collection_lc_ac + WHERE LEFT(ym, 4) = LEFT('${p_ym}', 4) + AND ym <= '${p_ym}' + GROUP BY organ_code, comm_id, comm_name + )A1 + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + FROM dim_organ_mapping + WHERE length(hr_comm_id) > 0 + GROUP BY + organ_code + ,organ_name + ,comm_id + ,comm_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片区名称 + ,'' AS comm_id + ,'' AS comm_name + ,'153' AS hr_organ_id -- hr片区编码 + ,'领悦集团总部' AS hr_organ_name -- hr片区名称 + ,'153' AS hr_comm_id -- hr项目id + ,'领悦集团总部' AS hr_comm_name -- hr项目名称 + )A2 + ON A1.organ_code = A2.organ_code + and A1.comm_id = A2.hr_comm_id + where 1 = 1 + ${IF(LEN(p_area)>0," AND A1.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +${IF(LEN(p_shop)!=0," and A2.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} + + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + organ_code + ,comm_id + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month = '${p_ym}' + GROUP BY + organ_code,comm_id + )B + ON A.organ_code = B.organ_code + AND A.erp_comm_id = B.comm_id + LEFT JOIN + ( + SELECT + organ_code + ,comm_id + ,lc_fee_rate_target -- 人力成本费率目标 + ,ac_fee_rate_target -- 行政成本费率目标 + FROM ods_cost_collection_target + WHERE ym = '${p_ym}' + )C + ON A.organ_code = C.organ_code + AND A.comm_id = C.comm_id + GROUP BY A.comm_name +)T + ${if(and(len(p_area)>0,p_type='人力')," -- 片区排名开始", "*/")} + + +${if(and(len(p_area)>0,p_type='行政')," -- 片区排名开始", "/*")} + +SELECT +T.organ_comm_name AS organ_comm_name +,T.actual_cost AS actual_cost +,T.index_income_fact AS index_income_fact -- 实际收入 +,ROW_NUMBER() OVER (ORDER BY T.fee_rate DESC ) AS 排名 -- 费率排名 +,T.fee_rate AS fee_rate +,T. target_fee_rate AS target_fee_rate -- 费率目标 +FROM +( + SELECT + A.comm_name AS organ_comm_name + ,SUM(A.ac_total_fee) AS actual_cost -- 成本 + ,SUM(B.index_income_fact) AS index_income_fact -- 实际收入 + -- ,ROW_NUMBER() OVER (ORDER BY A.lc_total_fee / B.index_income_fact DESC ) AS 排名 -- 费率排名 + ,CASE WHEN SUM(B.index_income_fact) = 0 THEN 0 + ELSE SUM(A.ac_total_fee) / SUM(B.index_income_fact) END AS fee_rate + ,SUM(C.ac_fee_rate_target) AS target_fee_rate -- 费率目标 + FROM + ( -- 费控人力行政成本填报 + SELECT + A1.organ_code AS organ_code + ,A1.comm_id AS comm_id + ,A1.comm_name AS comm_name + ,A1.ac_total_fee AS ac_total_fee + ,A2.comm_id AS erp_comm_id + FROM + ( + -- 费控人力行政成本填报 + SELECT organ_code + , comm_id + , comm_name + , COALESCE(SUM(CASE WHEN cost_type = '人力成本' THEN actual_amount ELSE 0 END), + 0) AS lc_total_fee -- 人力成本费用 + , COALESCE(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END), + 0) AS ac_total_fee -- 行政成本费用 + FROM dw.ods_cost_collection_lc_ac + WHERE LEFT(ym, 4) = LEFT('${p_ym}', 4) + AND ym <= '${p_ym}' + GROUP BY organ_code, comm_id, comm_name + )A1 + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + FROM dim_organ_mapping + WHERE length(hr_comm_id) > 0 + GROUP BY + organ_code + ,organ_name + ,comm_id + ,comm_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片区名称 + ,'' AS comm_id + ,'' AS comm_name + ,'153' AS hr_organ_id -- hr片区编码 + ,'领悦集团总部' AS hr_organ_name -- hr片区名称 + ,'153' AS hr_comm_id -- hr项目id + ,'领悦集团总部' AS hr_comm_name -- hr项目名称 + )A2 + ON A1.organ_code = A2.organ_code + and A1.comm_id = A2.hr_comm_id + where 1 = 1 + ${IF(LEN(p_area)>0," AND A1.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_shop)!=0," and A2.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} + + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + organ_code + ,comm_id + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month = '${p_ym}' + GROUP BY + organ_code,comm_id + )B + ON A.organ_code = B.organ_code + AND A.erp_comm_id = B.comm_id + LEFT JOIN + ( + SELECT + organ_code + ,comm_id + ,lc_fee_rate_target -- 人力成本费率目标 + ,ac_fee_rate_target -- 行政成本费率目标 + FROM ods_cost_collection_target + WHERE ym = '${p_ym}' + )C + ON A.organ_code = C.organ_code + AND A.comm_id = C.comm_id + WHERE 1 = 1 + GROUP BY A.comm_name + )T +${if(and(len(p_area)>0,p_type='行政')," -- 片区排名开始", "*/")} \ No newline at end of file diff --git a/finereport/kanban/pc/人力.sql b/finereport/kanban/pc/人力.sql index 0db4946..214b7e0 100644 --- a/finereport/kanban/pc/人力.sql +++ b/finereport/kanban/pc/人力.sql @@ -452,7 +452,7 @@ FROM ,'领悦集团总部' AS hr_comm_name -- hr项目名称 ,'' AS comm_name )B -ON A.organ_code = B.hr_organ_id +ON A.organ_code = B.organ_code and A.comm_id = B.hr_comm_id WHERE 1 = 1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} @@ -805,7 +805,7 @@ FROM FROM ods_hr_collection_target_organ WHERE ym = '${p_ym}' )C - ON A.pq = C.organ_code + ON B.organ_code = C.organ_code where 1 = 1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} GROUP BY @@ -988,8 +988,8 @@ FROM FROM ods_hr_collection_target WHERE ym = '${p_ym}' )C - ON A.pq = C.organ_code - AND A.xm = C.comm_id + ON B.organ_code = C.organ_code + AND B.hr_comm_id = C.comm_id WHERE 1=1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL @@ -1325,8 +1325,7 @@ SELECT ,SUM(index_income_target) AS index_income_target -- 收入目标 FROM ods_caiwu_feecollection WHERE category = '物业' - AND left(yr_month,4) = left('${p_ym}',4) - AND yr_month < '${p_ym}' + AND yr_month = '${p_ym}' GROUP BY organ_code )B @@ -1342,7 +1341,7 @@ SELECT )C ON A.organ_code = C.organ_code - ${if(and(len(p_area)=0,p_type='人力')," -- 片区排名开始", "*/")} +${if(and(len(p_area)=0,p_type='人力')," -- 片区排名开始", "*/")} ${if(and(len(p_area)=0,p_type='行政')," -- 片区排名开始", "/*")} @@ -1359,7 +1358,7 @@ SELECT A.organ_name AS organ_comm_name ,A.ac_total_fee AS actual_cost -- 成本 ,B.index_income_fact AS index_income_fact -- 实际收入 - ,ROW_NUMBER() OVER (ORDER BY A.lc_total_fee / B.index_income_fact DESC ) AS 排名 -- 费率排名 + ,ROW_NUMBER() OVER (ORDER BY A.ac_total_fee / B.index_income_fact DESC ) AS 排名 -- 费率排名 ,A.lc_total_fee / B.index_income_fact AS fee_rate -- 行政成本费率 ,C.ac_fee_rate_target AS target_fee_rate -- 费率目标 FROM @@ -1382,8 +1381,7 @@ SELECT ,SUM(index_income_fact) AS index_income_fact -- 实际收入 FROM ods_caiwu_feecollection WHERE category = '物业' - AND LEFT(yr_month,4) = left('${p_ym}',4) - AND yr_month <= '${p_ym}' + AND yr_month = '${p_ym}' GROUP BY organ_code )B @@ -1502,13 +1500,12 @@ FROM ,SUM(index_income_fact) AS index_income_fact -- 实际收入 FROM ods_caiwu_feecollection WHERE category = '物业' - AND LEFT(yr_month,4) = left('${p_ym}',4) - AND yr_month <= '${p_ym}' + AND yr_month = '${p_ym}' GROUP BY organ_code,comm_id )B ON A.organ_code = B.organ_code - AND A.comm_id = B.comm_id + AND A.erp_comm_id = B.comm_id LEFT JOIN ( SELECT @@ -1626,13 +1623,12 @@ FROM ,SUM(index_income_fact) AS index_income_fact -- 实际收入 FROM ods_caiwu_feecollection WHERE category = '物业' - AND LEFT(yr_month,4) = left('${p_ym}',4) - AND yr_month <= '${p_ym}' + AND yr_month = '${p_ym}' GROUP BY organ_code,comm_id )B ON A.organ_code = B.organ_code - AND A.comm_id = B.comm_id + AND A.erp_comm_id = B.comm_id LEFT JOIN ( SELECT @@ -1669,30 +1665,158 @@ with one_to_many AS( WHERE a.username = '${fine_username}' ) SELECT - T.hr_organ_name AS hr_organ_name - ,T.lz_rate AS lz_rate - ,T.lz_rate_target AS lz_rate_target - ,ROW_NUMBER() OVER(ORDER BY T.lz_rate desc) AS 排名 + T.hr_organ_name AS hr_organ_name +,T.lz_rate AS lz_rate +,T.lz_rate_target AS lz_rate_target +,ROW_NUMBER() OVER(ORDER BY T.lz_rate desc) AS 排名 FROM +( + SELECT + B.hr_organ_name AS hr_organ_name + ,CASE WHEN sum(A.zzrs) = 0 THEN 0 + ELSE SUM(A.zlzrs) / sum(zzrs) + END AS lz_rate -- 离职率 + ,SUM(C.lz_rate_target) AS lz_rate_target + FROM ( SELECT - B.hr_organ_name AS hr_organ_name - ,CASE WHEN sum(A.zzrs) = 0 THEN 0 - ELSE SUM(A.zlzrs) / sum(zzrs) - END AS lz_rate -- 离职率 - ,SUM(C.lz_rate_target) AS lz_rate_target + T.pq as pq + ,SUM(T.zzrs) AS zzrs + ,SUM(T.zlzrs) AS zlzrs FROM ( SELECT - pq -- 片区 - ,xm -- 项目 - ,SUM(zzrs) AS zzrs -- 当天在职人数 - ,SUM(zlzrs) AS zlzrs -- 当天总离职人数 + pq -- 片区 + ,LEFT(rq,7) AS ym + ,SUM(CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END) AS zzrs -- 在职人数 + ,SUM(zlzrs) AS zlzrs -- 当天总离职人数 FROM ods_hr_view_lzbl_d - WHERE LEFT(rq,4) = left('${p_ym}',4) - AND LEFT(rq,7) <= '${p_ym}' - AND pq not in('89','267') -- 排除了佳美、悦汇 - GROUP BY pq, xm + -- 排除了: + -- 89:佳美物业公司 + -- 267:悦汇发展公司 + GROUP BY pq,LEFT(rq,7) + UNION ALL + SELECT + T1.organ_code AS pq + ,T1.ym AS ym + ,(SUM(T1.begin_num ) + SUM(T1.end_num)) / 2 AS zzrs-- 在职人数 + ,SUM(T1.active_quit) + SUM(T1.pass_quit ) AS zlzrs + FROM + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-01' AS ym + ,COALESCE(jan_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 + ,COALESCE(jan_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(jan_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(feb_end_num,0) AS end_num -- 月末在职 + ,COALESCE(feb_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(feb_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(mar_end_num,0) AS end_num -- 月末在职 + ,COALESCE(mar_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(mar_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(apr_end_num,0) AS end_num -- 月末在职 + ,COALESCE(apr_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(apr_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(may_end_num,0) AS end_num -- 月末在职 + ,COALESCE(may_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(may_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(jun_end_num,0) AS end_num -- 月末在职 + ,COALESCE(jun_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(jun_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(jul_end_num,0) AS end_num -- 月末在职 + ,COALESCE(jul_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(jul_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(aug_end_num,0) AS end_num -- 月末在职 + ,COALESCE(aug_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(aug_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(sep_end_num,0) AS end_num -- 月末在职 + ,COALESCE(sep_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(sep_pass_quit,0) AS pass_quit -- 被动离职人数 + FROM ods_hr_history_erp_date + )T1 + GROUP BY T1.organ_code ,T1.ym + )T + WHERE LEFT(ym,4) = left('${p_ym}',4) + AND LEFT(ym,7) <= '${p_ym}' + AND pq not in('89','267') -- 排除了佳美、悦汇 + group by T.pq )A LEFT JOIN ( @@ -1724,13 +1848,12 @@ FROM FROM ods_hr_collection_target_organ WHERE ym = '${p_ym}' )C - ON A.pq = C.organ_code + ON B.organ_code = C.organ_code where 1 = 1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} - GROUP BY - B.hr_organ_name - )T + B.hr_organ_name +)T ${IF(LEN(p_area)=0,"", "*/")} @@ -1758,19 +1881,148 @@ FROM ELSE SUM(A.zlzrs) / SUM(A.zzrs) END AS lz_rate ,SUM(C.lz_rate_target) AS lz_rate_target - + FROM + ( + SELECT + T.pq as pq + ,T.xm AS xm + ,SUM(T.zzrs) AS zzrs + ,sum(T.zlzrs) AS zlzrs FROM ( SELECT pq -- 片区 ,xm -- 项目 - ,SUM(zzrs) AS zzrs -- 当天在职人数 - ,SUM(zlzrs) AS zlzrs -- 当天总离职人数 - FROM ods_hr_view_lzbl_d - WHERE LEFT(rq,4) = left('${p_ym}',4) - AND LEFT(rq,7) <= '${p_ym}' + ,LEFT(rq,7) AS ym + ,SUM(CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END) AS zzrs -- 在职人数 + ,SUM(zlzrs) AS zlzrs -- 当天总离职人数 + FROM ods_hr_view_lzbl_d + GROUP BY pq, xm, rq + UNION ALL + + SELECT + T1.organ_code AS pq + ,T1.comm_id AS xm + ,T1.ym AS ym + ,(SUM(T1.begin_num ) + SUM(T1.end_num)) / 2 AS zzrs-- 在职人数 + ,SUM(T1.active_quit) + SUM(T1.pass_quit ) AS zlzrs + FROM + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-01' AS ym + ,COALESCE(jan_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 + ,COALESCE(jan_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(jan_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(feb_end_num,0) AS end_num -- 月末在职 + ,COALESCE(feb_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(feb_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(mar_end_num,0) AS end_num -- 月末在职 + ,COALESCE(mar_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(mar_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(apr_end_num,0) AS end_num -- 月末在职 + ,COALESCE(apr_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(apr_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(may_end_num,0) AS end_num -- 月末在职 + ,COALESCE(may_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(may_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(jun_end_num,0) AS end_num -- 月末在职 + ,COALESCE(jun_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(jun_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(jul_end_num,0) AS end_num -- 月末在职 + ,COALESCE(jul_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(jul_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(aug_end_num,0) AS end_num -- 月末在职 + ,COALESCE(aug_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(aug_pass_quit,0) AS pass_quit -- 被动离职人数 + 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 -- 月初在职 + ,COALESCE(sep_end_num,0) AS end_num -- 月末在职 + ,COALESCE(sep_active_quit,0) AS active_quit -- 主动离职人数 + ,COALESCE(sep_pass_quit,0) AS pass_quit -- 被动离职人数 + FROM ods_hr_history_erp_date + )T1 + GROUP BY T1.organ_code, T1.comm_id ,T1.ym + )T + WHERE LEFT(ym,4) = left('${p_ym}',4) + AND LEFT(ym,7) <= '${p_ym}' AND pq not in('89','267') -- 排除了佳美、悦汇 - GROUP BY pq, xm + AND (pq is NOT NULL OR xm IS NOT NULL ) + group by T.pq,T.xm )A LEFT JOIN ( @@ -1781,6 +2033,7 @@ FROM ,hr_organ_name ,hr_comm_id ,hr_comm_name + ,comm_id ,comm_name FROM dim_organ_mapping WHERE length(hr_comm_id) > 0 @@ -1792,6 +2045,7 @@ FROM ,hr_comm_id ,hr_comm_name ,comm_name + ,comm_id UNION ALL SELECT '0000' AS organ_code -- erp片区编码 @@ -1800,6 +2054,7 @@ FROM ,'领悦集团总部' AS hr_organ_name -- hr片区名称 ,'153' AS hr_comm_id -- hr项目id ,'领悦集团总部' AS hr_comm_name -- hr项目名称 + ,'' AS comm_id ,'' AS comm_name )B ON A.pq = B.hr_organ_id @@ -1813,8 +2068,8 @@ FROM FROM ods_hr_collection_target WHERE ym = '${p_ym}' )C - ON A.pq = C.organ_code - AND A.xm = C.comm_id + ON B.organ_code = C.organ_code + AND B.hr_comm_id = C.comm_id where 1 = 1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL @@ -1837,27 +2092,25 @@ ${IF(LEN(p_area)>0,"", "*/")} ${IF(LEN(p_area)=0,"", "/*")} SELECT -T.lc_fee_rate AS lc_fee_rate -- 人力成本费率 -,T.lc_fee_rate_target AS lc_fee_rate_target -- 人力成本费率目标 -,CASE WHEN T.lc_fee_rate_target = 0 THEN 0 - ELSE T.lc_fee_rate / T.lc_fee_rate_target END AS lc_target_rate -- 人力成本费率目标占比 -,T.ac_fee_rate AS ac_fee_rate -- 行政成本费率 -,T.ac_fee_rate_target AS ac_fee_rate_target -- 行政成本费率目标值 -,CASE WHEN T.ac_fee_rate_target = 0 THEN 0 - ELSE T.ac_fee_rate / T.ac_fee_rate_target END AS ac_target_rate -- 行政成本费率目标占比 +SUM(T.lc_fee_rate) AS lc_fee_rate -- 人力成本费率 +,SUM(T.lc_fee_rate_target) AS lc_fee_rate_target -- 人力成本费率目标 +,CASE WHEN sum(T.lc_fee_rate_target) = 0 THEN 0 + ELSE SUM(T.lc_fee_rate) / sum(T.lc_fee_rate_target) END AS lc_target_rate -- 人力成本费率目标占比 +,SUM(T.ac_fee_rate) AS ac_fee_rate -- 行政成本费率 +,SUM(T.ac_fee_rate_target) AS ac_fee_rate_target -- 行政成本费率目标值 +,CASE WHEN sum(T.ac_fee_rate_target) = 0 THEN 0 + ELSE sum(T.ac_fee_rate) / sum(T.ac_fee_rate_target) END AS ac_target_rate -- 行政成本费率目标占比 FROM ( SELECT coalesce(SUM(CASE WHEN cost_type = '人力成本' THEN actual_amount ELSE 0 END),0) / (SELECT SUM(index_income_fact) FROM ods_caiwu_feecollection WHERE category = '物业' - AND left(yr_month,4) = left('${p_ym}',4) - AND yr_month < '${p_ym}') AS lc_fee_rate -- 人力成本费率 + AND yr_month = '${p_ym}') AS lc_fee_rate -- 人力成本费率 ,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END),0) / (SELECT SUM(index_income_fact) FROM ods_caiwu_feecollection WHERE category = '物业' - AND left(yr_month,4) = left('${p_ym}',4) - AND yr_month < '${p_ym}') AS ac_fee_rate -- 行政成本费率 + AND yr_month = '${p_ym}') AS ac_fee_rate -- 行政成本费率 ,0 AS lc_fee_rate_target -- 人力成本费率 ,0 AS ac_fee_rate_target -- 行政成本费率 from dw.ods_cost_collection_lc_ac @@ -1911,8 +2164,7 @@ SELECT ,SUM(index_income_fact) AS index_income_fact -- 实际收入 FROM ods_caiwu_feecollection WHERE category = '物业' - AND left(yr_month,4) = left('${p_ym}',4) - AND yr_month < '${p_ym}' + AND yr_month = '${p_ym}' GROUP BY organ_code )B ON A.organ_code = B.organ_code diff --git a/finereport/tianbao/5_manpower/5_费控人力行政成本填报.sql b/finereport/tianbao/5_manpower/5_费控人力行政成本填报.sql index 6aaa888..9810743 100644 --- a/finereport/tianbao/5_manpower/5_费控人力行政成本填报.sql +++ b/finereport/tianbao/5_manpower/5_费控人力行政成本填报.sql @@ -27,13 +27,29 @@ SELECT ,budget_amount -- 成本预算值 ,actual_amount -- 成本实际值' FROM ods_cost_collection_lc_ac +where organ_code = '0117' WHERE ym = '${p_ym}' AND cost_type = '${p_type}' +拿乌鲁木齐片区核对: +人力成本实际值(2024-01月至2024-10月): 809.89万元 +财务物业实际收入(2024-01月至2024-10月): 6471.01 万元 +人力成本费率=人力成本实际值/财务物业实际收入: 809.89 / 6471 = 0.1251568537 = 12.52% - + SELECT + organ_code + ,organ_name + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + ,SUM(index_income_target) AS index_income_target -- 收入目标 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND left(yr_month,4) = '2024' + AND yr_month < '2024-11' + GROUP BY + organ_code + ,organ_name TRUNCATE TABLE ods_cost_collection_lc_ac; diff --git a/finereport/xiazuan/5_manpower/2_员工满编率明细.sql b/finereport/xiazuan/5_manpower/2_员工满编率明细.sql index 1104114..1a6c017 100644 --- a/finereport/xiazuan/5_manpower/2_员工满编率明细.sql +++ b/finereport/xiazuan/5_manpower/2_员工满编率明细.sql @@ -129,6 +129,8 @@ RIGHT JOIN ,hr_organ_name -- hr片区名称 ,hr_comm_id -- hr项目id ,hr_comm_name -- hr项目名称 + ,comm_id + ,comm_name FROM dim_organ_mapping WHERE length(hr_comm_id) > 0 GROUP BY @@ -138,6 +140,8 @@ RIGHT JOIN ,hr_organ_name ,hr_comm_id ,hr_comm_name + ,comm_id + ,comm_name UNION ALL SELECT '0000' AS organ_code -- erp片区编码 @@ -146,6 +150,8 @@ RIGHT JOIN ,'领悦集团总部' AS hr_organ_name -- hr片区名称 ,'153' AS hr_comm_id -- hr项目id ,'领悦集团总部' AS hr_comm_name -- hr项目名称 + ,'' AS comm_id + ,'' AS comm_name FROM dual )B ON A.pq = B.hr_organ_id @@ -160,8 +166,8 @@ LEFT JOIN FROM ods_hr_collection_target WHERE ym = '${p_ym}' )C -ON A.pq = C.organ_code -AND A.xm = C.comm_id +ON B.organ_code = C.organ_code +AND B.hr_comm_id = C.comm_id WHERE 1=1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('" + p_area +"')", "")} GROUP BY diff --git a/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql b/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql index 03dfb89..bd06930 100644 --- a/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql +++ b/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql @@ -222,7 +222,7 @@ ${if(p_type='人力',"","/*")} ,SUM(index_income_fact) AS index_income_fact -- 实际收入 FROM ods_caiwu_feecollection WHERE category = '物业' - AND yr_month >= '${p_startym}' + AND LEFT(yr_month,4) = left('${p_ym}',4) AND yr_month <= '${p_ym}' GROUP BY organ_code,comm_id @@ -249,8 +249,7 @@ ${if(p_type='人力',"","/*")} ,lc_fee_rate_target -- 人力成本费率目标 ,ac_fee_rate_target -- 行政成本费率目标 FROM ods_cost_collection_target - WHERE left(ym,4) = left('${p_ym}',4) - AND length(ym) = 4 + WHERE ym = '${p_ym}' )D ON A.organ_code = D.organ_code AND A.comm_id = D.comm_id @@ -337,8 +336,8 @@ FROM ,SUM(index_income_fact) AS index_income_fact -- 实际收入 FROM ods_caiwu_feecollection WHERE category = '物业' - AND yr_month >= '${p_startym}' - AND yr_month <= '${p_ym}' + AND LEFT(yr_month,4) = left('${p_ym}',4) + AND yr_month <= '${p_ym}' GROUP BY organ_code,comm_id )B @@ -364,8 +363,8 @@ FROM ,lc_fee_rate_target -- 人力成本费率目标 ,ac_fee_rate_target -- 行政成本费率目标 FROM ods_cost_collection_target - WHERE left(ym,4) = left('${p_ym}',4) - AND length(ym) = 4 + WHERE ym = '${p_ym}' + )D ON A.organ_code = D.organ_code AND A.comm_id = D.comm_id diff --git a/finereport/历史数据/今日收费历史数据保留.sql b/finereport/历史数据/今日收费历史数据保留.sql index 461a1c7..2f19573 100644 --- a/finereport/历史数据/今日收费历史数据保留.sql +++ b/finereport/历史数据/今日收费历史数据保留.sql @@ -19,10 +19,10 @@ SELECT * FROM ods_history_today_fee_save; INSERT INTO ods_history_today_fee_save SELECT - CURRENT_DATE AS dt -- 当天 -,CURRENT_TIMESTAMP AS extract_date -- 抽数日期 -,CURRENT_TIME AS extract_time -- 抽数时间 -,sum(ifnull(pr_paid_amt,0) + ifnull(cu_paid_amt,0) + ifnull(fu_paid_amt,0))/10000 paid_amt + LEFT(CURRENT_DATE,10) AS dt -- 当天 +,CURRENT_TIMESTAMP() AS extract_date -- 抽数日期 +,CURRENT_TIME() AS extract_time -- 抽数时间 +,sum(ifnull(pr_paid_amt,0) + ifnull(cu_paid_amt,0) + ifnull(fu_paid_amt,0))/10000 metric_value from dws_finance_today_fees_d WHERE ParentCostCode not in ('0006','0009','0010','0011') and MiddleCostCode not in ('00080013','00080014','00080015','00080016','00080025','00080029','00080033','00080036','00080037') @@ -37,8 +37,7 @@ SELECT ,t.extract_date AS extract_date ,t.extract_time AS extract_time ,t.metric_value AS metric_value -,row_number() OVER (PARTITION BY dt ORDER BY extract_date desc) as rk -- 根据抽数时间排序 - +,row_number() OVER (PARTITION BY LEFT(dt,10) ORDER BY extract_date desc) as rk -- 根据抽数时间排序 FROM ( SELECT @@ -49,9 +48,11 @@ dt -- 如果一个小时内多次抽数的情况,取最新的 ,row_number() OVER (PARTITION BY dt,hour(extract_date) ORDER BY extract_date desc) as rk FROM ods_history_today_fee_save -WHERE dt = '${s_ym}' +WHERE LEFT(dt,10) = '${s_ym}' )t WHERE t.rk = 1 +AND hour(extract_date) >= 7 +AND hour(extract_date) <= 24 ) SELECT a.dt AS dt