From c33ed1cdead05002c0723ec2681845279d2dfd91 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Mon, 28 Oct 2024 17:31:37 +0800 Subject: [PATCH] =?UTF-8?q?=E6=98=8E=E7=BB=86=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 3 + finereport/kanban/pc/人力.sql | 205 ++++++++++++++- .../tianbao/5_manpower/人力看板目标值填报.sql | 35 +++ .../xiazuan/5_manpower/2_员工满编率明细.sql | 62 +++++ .../xiazuan/5_manpower/3_员工离职率明细.sql | 61 +++++ .../5_manpower/4_人力行政成本费率明细.sql | 142 +++++++++++ .../xiazuan/5_manpower/5_在职人员明细.sql | 239 ++++++++++++++++++ 7 files changed, 746 insertions(+), 1 deletion(-) create mode 100644 finereport/tianbao/5_manpower/人力看板目标值填报.sql create mode 100644 finereport/xiazuan/5_manpower/2_员工满编率明细.sql create mode 100644 finereport/xiazuan/5_manpower/3_员工离职率明细.sql create mode 100644 finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql create mode 100644 finereport/xiazuan/5_manpower/5_在职人员明细.sql diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 18e797f..92c3800 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -42,6 +42,7 @@ + @@ -51,6 +52,8 @@ + + diff --git a/finereport/kanban/pc/人力.sql b/finereport/kanban/pc/人力.sql index 9447603..a3955f2 100644 --- a/finereport/kanban/pc/人力.sql +++ b/finereport/kanban/pc/人力.sql @@ -721,4 +721,207 @@ FROM ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} GROUP BY ${IF(LEN(p_area)>0,"B.hr_comm_name", "hr_organ_name")} - )T \ No newline at end of file + )T + + + + +-- ====================================== +-- 指标卡_人力成本费率/目标值 +-- ====================================== + +SELECT + SUM(T1.actual_cost) AS actual_cost -- 人力成本 + ,SUM(T1.index_income_fact) AS index_income_fact -- 实际收入 + ,sum(T1.actual_cost) / sum(T1.index_income_fact) AS FEE_RATE -- 费率 + ,0 AS fee_rate_target +FROM + ( + SELECT + A.yr_month AS yr_month + ,A.actual_cost + ,b.index_income_fact AS index_income_fact + FROM + ( + -- 费控人力成本科目汇总表 + SELECT + organ_code + ,CONCAT(yearname,'-',monthname) AS yr_month + ,SUM(CASE WHEN fee_type IN('实际值','目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 + from dw.dws_cost_ac_summary_d + WHERE CONCAT(yearname,'-',monthname) = '${LEFT(MONTHDELTA(p_ym,-1),7)}' + GROUP BY CONCAT(yearname,'-',monthname),organ_code + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + yr_month + ,organ_code + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month = '${LEFT(MONTHDELTA(p_ym,-1),7)}' + GROUP BY yr_month,organ_code + )B + ON A.yr_month = B.yr_month + AND A.organ_code = B.organ_code + WHERE 1 = 1 + ${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + )T1 + + + +-- ====================================== +-- 指标卡_行政成本费率/目标值 +-- ====================================== + + + +SELECT + SUM(T1.actual_cost) AS actual_cost -- 行政成本 + ,SUM(T1.index_income_fact) AS index_income_fact -- 实际收入 + ,SUM(T1.actual_cost) / SUM(T1.index_income_fact) AS FEE_RATE -- 费率 + ,0 AS fee_rate_target +FROM +( + SELECT + A.yr_month AS yr_month + ,A.actual_cost AS actual_cost -- 人力成本 + ,B.index_income_fact AS index_income_fact -- 实际收入 + FROM + ( +-- 费控行政成本科目汇总表 + SELECT + organ_code + ,CONCAT(yearname, '-', monthname) AS yr_month + ,SUM(CASE WHEN fee_type IN ('实际值', '目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 + FROM dw.dws_cost_lc_summary_d + WHERE CONCAT(yearname, '-', monthname) = '${LEFT(MONTHDELTA(p_ym,-1),7)}' + GROUP BY CONCAT(yearname, '-', monthname),organ_code + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + yr_month + ,organ_code + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month = '${LEFT(MONTHDELTA(p_ym,-1),7)}' + GROUP BY yr_month,organ_code + )B + ON A.yr_month = B.yr_month + AND A.organ_code = B.organ_code + WHERE 1=1 + ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + + )T1 + + +-- ====================================== +-- 指标卡_在职人数满编率/目标值 +-- ====================================== + + +SELECT +CASE WHEN SUM(avg_bzs) = 0 THEN 0 ELSE SUM(avg_zzs) / SUM(avg_bzs) END AS full_rate -- 满编率 +,0 AS full_rate_target +FROM +( + SELECT + pq -- 片区 + ,xm -- 项目 + ,zzs -- 在职数 + ,bzs -- 编制数 + ,rq + ,datediff(current_date(),rq) AS datedif -- 结束日期--开始日期 + ,sum(zzs) over(PARTITION BY rq,pq,xm) AS total_zzs -- 累计在职人数 + ,sum(bzs) over(PARTITION BY rq,pq,xm) AS total_bzs -- 累计编制人数 + ,sum(zzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) AS avg_zzs -- 平均在职人数 + ,sum(bzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) AS avg_bzs -- 平均编制人数 + FROM ods_hr_view_mbl_d + WHERE CONCAT(nd,'-',yd) = '${p_ym}' + -- 注意 目前会有一个空的排名 是因为佳美物业未做映射 + AND pq <> '89' +)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_kunan_tmp + WHERE hr_organ_name IS NOT NULL + GROUP BY + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name +)B +ON A.pq = B.hr_organ_id +and A.xm = B.hr_comm_id +${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + + + +-- ====================================== +-- 指标卡_离职人数离职率/目标值 +-- ====================================== + + +SELECT +CASE WHEN ((SUM(StartOfmonth_zzrs) + SUM(EndOfmonth_zsrs)) / 2) = 0 THEN 0 + ELSE SUM(zlzrs) / ((SUM(StartOfmonth_zzrs) + SUM(EndOfmonth_zsrs)) / 2) + END AS lz_rate +,0 AS lz_rate_target +FROM +( + SELECT + nd -- 年度 + ,jd -- 季度 + ,yd -- 月度 + ,rq -- 日期 + ,zb -- 总部 + ,pq -- 片区 + ,xm -- 项目 + ,zzrs -- 当天在职人数 + ,zdlzrs -- 当天主动离职人数 + ,bdlzrs -- 当天被动离职人数 + ,zlzrs -- 当天总离职人数 + ,CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END AS StartOfmonth_zzrs -- 月初在职人数 + ,CASE WHEN rq = LAST_DAY(CONCAT('${p_ym}','-01')) THEN zzrs ELSE 0 END AS EndOfmonth_zsrs -- 月末在职人数 + FROM ods_hr_view_lzbl_d + WHERE LEFT(rq,7) = '${p_ym}' + AND pq not in('89','153','267') + -- 排除了: + -- 89:佳美物业公司 + -- 153:领悦集团总部 + -- 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_kunan_tmp + GROUP BY + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_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,"','")+"')", "")} diff --git a/finereport/tianbao/5_manpower/人力看板目标值填报.sql b/finereport/tianbao/5_manpower/人力看板目标值填报.sql new file mode 100644 index 0000000..c48ae52 --- /dev/null +++ b/finereport/tianbao/5_manpower/人力看板目标值填报.sql @@ -0,0 +1,35 @@ + + +CREATE TABLE ods_hr_collection_target ( + id int NOT NULL AUTO_INCREMENT COMMENT '主键(自增)' +,organ_code varchar(50) COMMENT 'erp片区code' +,organ_name varchar(100) COMMENT 'erp片区名称' +,comm_id varchar(50) COMMENT '项目id' +,comm_name varchar(100) COMMENT '项目名称' +,ym varchar(50) COMMENT '日期(yyyy-MM格式)' +,full_rate_target decimal(28,10) COMMENT '满编率目标' +,lz_rate_target decimal(28,10) COMMENT '离职率目标' +,lc_fee_rate_target decimal(28,10) COMMENT '人力成本费率目标' +,ac_fee_rate_target decimal(28,10) COMMENT '行政成本费率目标' +,update_by varchar(50) COMMENT '数据更新人' +,update_time datetime COMMENT '数据更新时间' +,PRIMARY KEY (id) +) COMMENT='人力目标值填报'; + +SELECT + organ_code -- erp片区code +,organ_name -- erp片区名称 +,comm_id -- 项目id +,comm_name -- 项目名称 +,ym -- 日期(yyyy-MM格式) +,full_rate_target -- 满编率目标 +,lz_rate_target -- 离职率目标 +,lc_fee_rate_target -- 人力成本费率目标 +,ac_fee_rate_target -- 行政成本费率目标 +FROM ods_hr_collection_target +WHERE ym = '${p_ym}' + + + + VALUE("dict_片区",1,2,B2) + VALUE("dict_片区_项目",3,4,C2) \ No newline at end of file diff --git a/finereport/xiazuan/5_manpower/2_员工满编率明细.sql b/finereport/xiazuan/5_manpower/2_员工满编率明细.sql new file mode 100644 index 0000000..23c9078 --- /dev/null +++ b/finereport/xiazuan/5_manpower/2_员工满编率明细.sql @@ -0,0 +1,62 @@ + +SELECT +T1.hr_comm_name AS hr_comm_name +,T1.hr_organ_name AS hr_organ_name +,T1.bzs AS bzs -- 当月编制数 +,T1.zzs AS zzs -- 当月在职数 +,'0' AS target_full_rate -- 月均满编率目标 +,CASE when T1.bzs = 0 then 0 else T1.zzs / T1.bzs end AS full_rate -- 月度满编率 +,'0' AS target_rate -- 月均满编率目标 +,T1.rate AS rate -- 月均满编率实际 +FROM +( + SELECT + B.hr_comm_name AS hr_comm_name + ,B.hr_organ_name AS hr_organ_name + ,SUM(A.bzs) AS bzs + ,SUM(A.zzs) AS zzs + ,CASE WHEN SUM(avg_bzs) = 0 THEN 0 ELSE SUM(avg_zzs) / SUM(avg_bzs) END AS RATE + FROM + ( + SELECT + pq -- 片区 + ,xm -- 项目 + ,zzs -- 在职数 + ,bzs -- 编制数 + ,rq + ,datediff(current_date(),rq) AS datedif -- 结束日期--开始日期 + ,sum(zzs) over(PARTITION BY rq,pq,xm) AS total_zzs -- 累计在职人数 + ,sum(bzs) over(PARTITION BY rq,pq,xm) AS total_bzs -- 累计编制人数 + ,sum(zzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) AS avg_zzs -- 平均在职人数 + ,sum(bzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) AS avg_bzs -- 平均编制人数 + FROM ods_hr_view_mbl_d + WHERE CONCAT(nd,'-',yd) = '${p_ym}' + -- 注意 目前会有一个空的排名 是因为佳美物业未做映射 + AND pq <> '89' + )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_kunan_tmp + WHERE hr_organ_name IS NOT NULL + GROUP BY + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + )B + ON A.pq = B.hr_organ_id + and A.xm = B.hr_comm_id + ${IF(LEN(p_area)>0," AND B.organ_code IN ('" + p_area +"')", "")} + GROUP BY + B.hr_comm_name + ,B.hr_organ_name +)T1 \ No newline at end of file diff --git a/finereport/xiazuan/5_manpower/3_员工离职率明细.sql b/finereport/xiazuan/5_manpower/3_员工离职率明细.sql new file mode 100644 index 0000000..f1353d4 --- /dev/null +++ b/finereport/xiazuan/5_manpower/3_员工离职率明细.sql @@ -0,0 +1,61 @@ + + + +SELECT +${IF(LEN(p_area)>0,"B.hr_comm_name", "hr_organ_name")} AS hr_organ_name +,CASE WHEN ((SUM(StartOfmonth_zzrs) + SUM(EndOfmonth_zsrs)) / 2) = 0 THEN 0 + ELSE SUM(zlzrs) / ((SUM(StartOfmonth_zzrs) + SUM(EndOfmonth_zsrs)) / 2) + END AS lz_rate +,SUM(StartOfmonth_zzrs) AS StartOfmonth_zzrs -- 月初在职人数 +,SUM(EndOfmonth_zsrs) AS EndOfmonth_zsrs -- 月末在职人数 +,sum(zdlzrs) AS zdlzrs -- 主动离职人数 +,sum(bdlzrs) AS bdlzrs -- 当天被动离职人数 +,SUM(zlzrs) AS zlzrs -- 总离职人数 +FROM +( + SELECT + nd -- 年度 + ,jd -- 季度 + ,yd -- 月度 + ,rq -- 日期 + ,zb -- 总部 + ,pq -- 片区 + ,xm -- 项目 + ,zzrs -- 当天在职人数 + ,zdlzrs -- 当天主动离职人数 + ,bdlzrs -- 当天被动离职人数 + ,zlzrs -- 当天总离职人数 + ,CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END AS StartOfmonth_zzrs -- 月初在职人数 + ,CASE WHEN rq = LAST_DAY(CONCAT('${p_ym}','-01')) THEN zzrs ELSE 0 END AS EndOfmonth_zsrs -- 月末在职人数 + FROM ods_hr_view_lzbl_d + WHERE LEFT(rq,7) = '${p_ym}' + AND pq not in('89','153','267') + -- 排除了: + -- 89:佳美物业公司 + -- 153:领悦集团总部 + -- 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_kunan_tmp + GROUP BY + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_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 ('" + p_area +"')", "")} +GROUP BY +${IF(LEN(p_area)>0,"B.hr_comm_name", "hr_organ_name")} diff --git a/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql b/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql new file mode 100644 index 0000000..5164b0c --- /dev/null +++ b/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql @@ -0,0 +1,142 @@ + +${if(p_type='人力',"","/*")} + +SELECT + A.organ_name AS organ_comm_name + ,A.actual_cost AS actual_cost -- 成本 + ,B.index_income_fact AS index_income_fact -- 实际收入 + ,ROW_NUMBER() OVER (ORDER BY A.actual_cost / B.index_income_fact DESC ) AS 排名 -- 费率排名 + ,A.actual_cost / B.index_income_fact AS fee_rate -- 费率 + ,A.budget_actual_cost / B.index_income_target AS target_fee_rate -- 费率目标 +FROM + ( +-- 费控人力成本科目汇总表 + SELECT + A1.organ_code + ,A1.organ_name + -- ${IF(LEN(p_area)>0,"dimsubjectname", "organ_name")} AS organ_comm_name + ,SUM(CASE WHEN fee_type IN('实际值','目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 + ,SUM(CASE WHEN fee_type = '目标值' THEN total_fee ELSE 0 END) / 10000 AS budget_actual_cost -- 人力成本预算值 + FROM + ( + SELECT + * + FROM dw.dws_cost_ac_summary_d -- 费控人力成本科目汇总表 + WHERE CONCAT(yearname,'-',monthname) = '${LEFT(MONTHDELTA(p_ym,-1),7)}' -- 取上月数据 + )A1 + LEFT JOIN + ( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,cost_comm_id + ,cost_comm_name + FROM dim_organ_mapping_kunan_tmp + GROUP BY + organ_code + ,organ_name + ,cost_comm_id + ,cost_comm_name + )A2 + ON A1.organ_code = A2.organ_code + -- AND A1.dimsubjectcode = A2.cost_comm_id + WHERE 1=1 + -- ${IF(LEN(p_area)>0," AND A2.id IN ('"+JOINARRAY(p_area,"','")+"')", "")} + GROUP BY + A1.organ_code + ,A1.organ_name + -- ${IF(LEN(p_area)>0,"dimsubjectname", "organ_name")} + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + -- ${IF(LEN(p_area)>0,"comm_name", "organ_name")} AS organ_comm_name + 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 = '${LEFT(MONTHDELTA(p_ym,-1),7)}' + GROUP BY + -- ${IF(LEN(p_area)>0,"comm_name", "organ_name")} + organ_code + )B + ON A.organ_code = B.organ_code + + ${if(p_type='人力',"","*/")} + + ${if(p_type='行政',"","/*")} + + + +SELECT + A.organ_name AS organ_comm_name + ,A.actual_cost AS actual_cost -- 成本 + ,B.index_income_fact AS index_income_fact -- 实际收入 + ,ROW_NUMBER() OVER (ORDER BY A.actual_cost / B.index_income_fact DESC ) AS 排名 -- 费率排名 + ,A.actual_cost / B.index_income_fact AS fee_rate -- 费率 + ,A.budget_actual_cost / B.index_income_target AS target_fee_rate -- 费率目标 +FROM + ( +-- 费控人力成本科目汇总表 + SELECT + -- ${IF(LEN(p_area)>0,"A2.comm_name", "A1.organ_name")} AS organ_comm_name + -- ${IF(LEN(p_area)>0,",A2.comm_id", ",A1.organ_code")} AS organ_comm_code + A1.organ_code + ,A1.organ_name + ,SUM(CASE WHEN fee_type IN('实际值','目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 + ,SUM(CASE WHEN fee_type = '目标值' THEN total_fee ELSE 0 END) / 10000 AS budget_actual_cost -- 人力成本预算值 + + FROM + ( + SELECT + * + FROM dw.dws_cost_lc_summary_d + WHERE CONCAT(yearname,'-',monthname) = '${LEFT(MONTHDELTA(p_ym,-1),7)}' + )A1 + LEFT JOIN + ( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,comm_id + ,comm_name + ,cost_comm_id + ,cost_comm_name + FROM dim_organ_mapping_kunan_tmp + GROUP BY + organ_code + ,organ_name + ,comm_id + ,comm_name + ,cost_comm_id + ,cost_comm_name + )A2 + ON A1.organ_code = A2.organ_code + -- AND A1.dimsubjectcode = A2.cost_comm_id + WHERE 1=1 + -- ${IF(LEN(p_area)>0," AND A2.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + GROUP BY + A1.organ_code + ,A1.organ_name + -- ${IF(LEN(p_area)>0,"A2.comm_name", "A1.organ_name")} + -- ${IF(LEN(p_area)>0,",A2.comm_id", ",A1.organ_code")} + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + -- ${IF(LEN(p_area)>0,"comm_id", "organ_code")} AS organ_comm_code + 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 = '${LEFT(MONTHDELTA(p_ym,-1),7)}' + GROUP BY + organ_code + -- ${IF(LEN(p_area)>0,"comm_id", "organ_code")} + )B + ON A.organ_code = B.organ_code + + ${if(p_type='行政',"","*/")} + diff --git a/finereport/xiazuan/5_manpower/5_在职人员明细.sql b/finereport/xiazuan/5_manpower/5_在职人员明细.sql new file mode 100644 index 0000000..3c13b62 --- /dev/null +++ b/finereport/xiazuan/5_manpower/5_在职人员明细.sql @@ -0,0 +1,239 @@ +-- ====================================== +-- 年龄分布 +-- ====================================== + +SELECT +nld +,sum(sl) AS sl +FROM +( +SELECT +zb -- 总部 +,pq -- 片区 +,xm -- 项目 +,nld -- 年龄段 +,sl -- 数量 +FROM ods_hr_view_nld_d +)A +LEFT JOIN +( + SELECT + organ_code + ,hr_organ_id + ,hr_comm_id + FROM dim_organ_mapping_kunan_tmp + GROUP BY + organ_code + ,hr_organ_id + ,hr_comm_id + +)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,"','")+"')", "")} +GROUP BY nld + + + +-- ====================================== +-- 司龄分布 +-- ====================================== + +SELECT + sld + ,sum(sl) AS sl +FROM + ( + SELECT + zb -- 总部 + ,pq -- 片区 + ,xm -- 项目 + ,sld -- 司龄段 + ,sl -- 数量 + FROM ods_hr_view_sld_d + )A + LEFT JOIN + ( + SELECT + organ_code + ,hr_organ_id + ,hr_comm_id + FROM dim_organ_mapping_kunan_tmp + GROUP BY + organ_code + ,hr_organ_id + ,hr_comm_id + + )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,"','")+"')", "")} +GROUP BY sld + + + + + +-- ====================================== +-- 学历分布 +-- ====================================== + + +SELECT + xl + ,sum(sl) AS sl +FROM + ( + SELECT + zb -- 总部 + ,pq -- 片区 + ,xm -- 项目 + ,xl -- 学历 + ,sl -- 数量 + FROM ods_hr_view_xl_d + )A + LEFT JOIN + ( + SELECT + organ_code + ,hr_organ_id + ,hr_comm_id + FROM dim_organ_mapping_kunan_tmp + GROUP BY + organ_code + ,hr_organ_id + ,hr_comm_id + + )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,"','")+"')", "")} +GROUP BY xl + + + +-- ====================================== +-- 职务角色 +-- ====================================== + + +SELECT + zwje + ,sum(sl) AS sl +FROM + ( + SELECT + zb -- 总部 + ,pq -- 片区 + ,xm -- 项目 + ,zwje -- 职务角色 + ,sl -- 数量 + FROM dw.ods_hr_view_zwjs_d + )A + LEFT JOIN + ( + SELECT + organ_code + ,hr_organ_id + ,hr_comm_id + FROM dim_organ_mapping_kunan_tmp + GROUP BY + organ_code + ,hr_organ_id + ,hr_comm_id + + )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,"','")+"')", "")} +GROUP BY zwje + + + + + + +-- ====================================== +-- 职务层级 +-- ====================================== + + +SELECT + swtx + ,sum(sl) AS sl +FROM + ( + SELECT + zb -- 总部 + ,pq -- 片区 + ,xm -- 项目 + ,swtx -- 职务层级 + ,sl -- 数量 + FROM dw.ods_hr_view_swtx_d + )A + LEFT JOIN + ( + SELECT + organ_code + ,hr_organ_id + ,hr_comm_id + FROM dim_organ_mapping_kunan_tmp + GROUP BY + organ_code + ,hr_organ_id + ,hr_comm_id + + )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,"','")+"')", "")} +GROUP BY swtx + + + + + +-- ====================================== +-- 一级专业条线 +-- ====================================== + + +SELECT + zytx + ,sum(sl) AS sl +FROM + ( + SELECT + zb -- 总部 + ,pq -- 片区 + ,xm -- 项目 + ,zytx -- 一级专业条线 + ,sl -- 数量 + FROM dw.ods_hr_view_zytx_d + )A + LEFT JOIN + ( + SELECT + organ_code + ,hr_organ_id + ,hr_comm_id + FROM dim_organ_mapping_kunan_tmp + GROUP BY + organ_code + ,hr_organ_id + ,hr_comm_id + + )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,"','")+"')", "")} +GROUP BY zytx + + +