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
+
+
+