明细表逻辑&看板取数优化为填报表作为数据来源

This commit is contained in:
yangkunan 2024-11-01 20:54:28 +08:00
parent ed9e566ae1
commit 23c49af1f2
7 changed files with 1715 additions and 587 deletions

View File

@ -42,11 +42,12 @@
<file url="file://$PROJECT_DIR$/finereport/kanban/pc/总裁.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/kanban/pc/法务.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/tianbao/3_property/1_各项目客户满意度得分.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/tianbao/5_manpower/1_月度合同到期提醒.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/tianbao/5_manpower/2_人力看板目标值填报.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/tianbao/5_manpower/3_人力看板目标值填报-公司整体.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/tianbao/5_manpower/4_人力看板目标值填报-片区.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/tianbao/5_manpower/5_费控人力行政成本填报.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/tianbao/5_manpower/6_费控目标值填报.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/tianbao/5_manpower/人力看板目标值填报-公司整体.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/tianbao/5_manpower/人力看板目标值填报-片区.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/tianbao/5_manpower/人力看板目标值填报.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/tianbao/6_innovation/多经四大业务指标完成情况填报表.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/tianbao/EARLY_WARNING/看板数据预警-项目维度.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/xiazuan/2_operation/住服比异常项目.sql" dialect="MySQL" />
@ -57,6 +58,7 @@
<file url="file://$PROJECT_DIR$/finereport/xiazuan/3_property/4_投诉明细.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/xiazuan/4_engine/1_异常抬杆下钻明细.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/xiazuan/5_manpower/2_员工满编率明细.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/xiazuan/5_manpower/3_员工离职率明细.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/xiazuan/5_manpower/5_在职人员明细.sql" dialect="MySQL" />
<file url="file://$PROJECT_DIR$/finereport/xiazuan/6_innovation/4_小悦到家服务销售明细.sql" dialect="MySQL" />

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,49 @@
DROP TABLE ods_renli_contract_terminate;
CREATE TABLE ods_renli_contract_terminate (
contract_code varchar(50) 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 '项目名称'
,contract_type varchar(100) COMMENT '合同类型'
,contract_name varchar(100) COMMENT '合同名称'
,contract_amount decimal(16,8) COMMENT '合同金额'
,party_a varchar(50) COMMENT '合作甲方'
,party_b varchar(50) COMMENT '合作乙方'
,start_date varchar(50) COMMENT '生效日期'
,end_date varchar(50) COMMENT '结束日期'
,update_by varchar(50) COMMENT '数据更新人'
,update_time datetime COMMENT '数据更新时间'
-- ,PRIMARY KEY (contract_code)
) COMMENT='月度合同到到期提醒填报';
SELECT
contract_code -- 合同编号
,organ_code -- erp片区code
,organ_name -- erp片区名称
,comm_id -- 项目id
,comm_name -- 项目名称
,contract_type -- 合同类型
,contract_name -- 合同名称
,contract_amount -- 合同金额
,party_a -- 合作甲方
,party_b -- 合作乙方
,start_date -- 生效日期
,end_date -- 结束日期
FROM ods_renli_contract_terminate
;
1-=90
2-=60
3-=30
4-=15
5-=7"
-- VALUE("dict_片区_项目",3,4,D4)
-- VALUE("dict_片区",1,2,B2)
-- VALUE("dict_片区_项目",3,4,C2)

View File

@ -1,31 +1,22 @@
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 -- 月均满编率实际
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 -- 在职数
,SUM(C.full_rate_target) AS full_rate_target -- 满编率目标值
,SUM(C.avg_full_rate_target) AS avg_full_rate_target -- 月均满编率目标值
,CASE WHEN SUM(bzs) = 0 THEN 0 ELSE SUM(zzs) / SUM(bzs) END 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(bzs) = 0 THEN 0 ELSE SUM(zzs) / SUM(bzs) END AS RATE
FROM
(
SELECT
pq -- 片区
,xm -- 项目
,zzs -- 在职数
,bzs -- 编制数
,rq
FROM ods_hr_view_mbl_d
WHERE rq = '${p_ym}'
WHERE ny >= '${p_startym}'
AND ny <= '${p_ym}'
-- 注意 目前会有一个空的排名 是因为佳美物业未做映射
AND pq NOT IN('89','267')
)A
@ -39,7 +30,7 @@ FROM
,hr_comm_id -- hr项目id
,hr_comm_name -- hr项目名称
FROM dim_organ_mapping
WHERE hr_organ_name IS NOT NULL
WHERE length(hr_comm_id) > 0
GROUP BY
organ_code
,organ_name
@ -47,7 +38,6 @@ FROM
,hr_organ_name
,hr_comm_id
,hr_comm_name
UNION ALL
SELECT
'0000' AS organ_code -- erp片区编码
@ -60,9 +50,20 @@ FROM
)B
ON A.pq = B.hr_organ_id
and A.xm = B.hr_comm_id
LEFT JOIN
(
SELECT
comm_id
,organ_code
,full_rate_target -- 满编率目标
,avg_full_rate_target -- 月均满编率目标
FROM ods_hr_collection_target
WHERE ym = '${p_ym}'
)C
ON A.pq = C.organ_code
AND A.xm = C.comm_id
WHERE 1=1
${IF(LEN(p_area)>0," AND B.organ_code IN ('" + p_area +"')", "")}
GROUP BY
B.hr_comm_name
,B.hr_organ_name
)T1
,B.hr_organ_name

View File

@ -1,38 +1,164 @@
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 -- 总离职人数
,SUM(A.StartOfmonth_zzrs) AS StartOfmonth_zzrs -- 月初在职人数
,SUM(A.EndOfmonth_zsrs) AS EndOfmonth_zsrs -- 月末在职人数
,sum(A.zdlzrs) AS zdlzrs -- 主动离职人数
,CASE WHEN SUM(A.zzrs) = 0 THEN 0 ELSE sum(A.zdlzrs) / SUM(A.zzrs) END AS zdlz_rate
,sum(A.bdlzrs) AS bdlzrs -- 当天被动离职人数
,CASE WHEN SUM(A.zzrs) = 0 THEN 0 ELSE sum(A.bdlzrs) / SUM(A.zzrs) END AS bdlz_rate
,SUM(A.zlzrs) AS zlzrs -- 总离职人数
,CASE WHEN SUM(A.zzrs) = 0 THEN 0 ELSE sum(A.zlzrs) / SUM(A.zzrs) END AS lz_rate
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 -- 月末在职人数
SELECT
pq, xm, ym, StartOfmonth_zzrs, EndOfmonth_zsrs, zdlzrs, bdlzrs, zlzrs
,(StartOfmonth_zzrs + EndOfmonth_zsrs) / 2 AS zzrs
FROM
(
SELECT
pq -- 片区
,xm -- 项目
,LEFT(rq,7) AS ym
,SUM(CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END) AS StartOfmonth_zzrs -- 月初在职人数
,SUM(CASE WHEN rq = LAST_DAY(CONCAT('${p_ym}','-01')) THEN zzrs ELSE 0 END) AS EndOfmonth_zsrs -- 月末在职人数
,SUM(zdlzrs) AS zdlzrs -- 当天主动离职人数
,SUM(bdlzrs) AS bdlzrs -- 当天被动离职人数
,SUM(zlzrs) AS zlzrs -- 当天总离职人数
FROM ods_hr_view_lzbl_d
WHERE LEFT(rq,7) = '${p_ym}'
AND pq not in('89','267')
-- 排除了:
-- 89:佳美物业公司
-- 153:领悦集团总部
-- 267:悦汇发展公司
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 ) AS StartOfmonth_zzrs-- 月初在职
,SUM(T1.end_num ) AS EndOfmonth_zsrs-- 月末在职
,SUM(T1.active_quit) AS zdlzrs-- 主动离职人数
,SUM(T1.pass_quit ) AS bdlzrs-- 被动离职人数
,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 ym >= '${p_startym}'
AND ym <= '${p_ym}'
AND pq not in('89','267')
AND (pq is NOT NULL OR xm IS NOT NULL )
)A
LEFT JOIN
RIGHT JOIN
(
SELECT
organ_code -- erp片区编码
@ -42,6 +168,7 @@ LEFT JOIN
,hr_comm_id -- hr项目id
,hr_comm_name -- hr项目名称
FROM dim_organ_mapping
WHERE length(hr_comm_id) > 0
GROUP BY
organ_code
,organ_name
@ -65,56 +192,193 @@ 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")}
ORDER BY ${IF(LEN(p_area)>0,"B.hr_comm_name", "hr_organ_name")}
-- 离职原因占比
-- ======================================
-- 天问提供历史数据处理
-- ======================================
DROP TABLE ods_hr_history_erp_date;
CREATE TABLE ods_hr_history_erp_date (
organ_name varchar(100) COMMENT 'erp片区名称'
,organ_code varchar(100) COMMENT 'erp片区编码'
,comm_name varchar(100) COMMENT '项目名称'
,comm_id varchar(100) COMMENT '项目id'
,sep_end_num int COMMENT '9月末在职人数'
,sep_pass_quit int COMMENT '9月被动离职人数'
,sep_active_quit int COMMENT '9月主动离职人数'
,sep_begin_num int COMMENT '9月初在职'
,aug_end_num int COMMENT '8月末在职人数'
,aug_pass_quit int COMMENT '8月被动离职人数'
,aug_active_quit int COMMENT '8月主动离职人数'
,aug_begin_num int COMMENT '8月初在职'
,jul_end_num int COMMENT '7月末在职人数'
,jul_pass_quit int COMMENT '7月被动离职人数'
,jul_active_quit int COMMENT '7月主动离职人数'
,jul_begin_num int COMMENT '7月初在职'
,jun_end_num int COMMENT '6月末在职人数'
,jun_pass_quit int COMMENT '6月被动离职人数'
,jun_active_quit int COMMENT '6月主动离职人数'
,jun_begin_num int COMMENT '6月初在职'
,may_end_num int COMMENT '5月末在职人数'
,may_pass_quit int COMMENT '5月被动离职人数'
,may_active_quit int COMMENT '5月主动离职人数'
,may_begin_num int COMMENT '5月初在职'
,apr_end_num int COMMENT '4月末在职人数'
,apr_pass_quit int COMMENT '4月被动离职人数'
,apr_active_quit int COMMENT '4月主动离职人数'
,apr_begin_num int COMMENT '4月初在职'
,mar_end_num int COMMENT '3月末在职人数'
,mar_pass_quit int COMMENT '3月被动离职人数'
,mar_active_quit int COMMENT '3月主动离职人数'
,mar_begin_num int COMMENT '3月初在职'
,feb_end_num int COMMENT '2月末在职人数'
,feb_pass_quit int COMMENT '2月被动离职人数'
,feb_active_quit int COMMENT '2月主动离职人数'
,feb_begin_num int COMMENT '2月初在职'
,jan_end_num int COMMENT '1月末在职人数'
,jan_pass_quit int COMMENT '1月被动离职人数'
,jan_active_quit int COMMENT '1月主动离职人数'
,jan_begin_num int COMMENT '1月初在职'
) COMMENT='erp系统历史离职人数';
SELECT * FROM ods_hr_history_erp_date
-- 列转行处理
SELECT
A.lzlx AS lzlx -- 离职类型id
,A.lzlxname AS lzlxname -- 离职类型名称
,A.lzyy AS lzyy -- 离职原因id
,A.lzyyname AS lzyyname -- 离职原因名称
,A.lzrs AS lzrs -- 离职人数
T1.organ_code AS organ_code
,T1.organ_name AS organ_name
,T1.comm_id AS comm_id
,T1.comm_name AS comm_name
,T1.ym AS ym
,SUM(T1.begin_num ) AS begin_num-- 月初在职
,SUM(T1.end_num ) AS end_num-- 月末在职
,SUM(T1.active_quit) AS active_quit-- 主动离职人数
,SUM(T1.pass_quit ) AS pass_quit-- 被动离职人数
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 -- 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
GROUP BY
organ_code
,organ_name
,hr_organ_id
,hr_organ_name
,hr_comm_id
,hr_comm_name
UNION ALL
SELECT
'0000' AS organ_code -- erp片区编码
,'' AS organ_name -- erp片区名称
,'153' AS hr_organ_id -- hr片区编码
,'领悦集团总部' AS hr_organ_name -- hr片区名称
,'153' AS hr_comm_id -- hr项目id
,'领悦集团总部' AS hr_comm_name -- hr项目名称
)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,"','")+"')", "")}
(
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.organ_name, T1.comm_id, T1.comm_name,T1.ym

View File

@ -140,3 +140,237 @@ FROM
${if(p_type='行政',"","*/")}
-- ======================================
-- 使用填报数据来源
-- ======================================
${if(p_type='人力',"","/*")}
SELECT
A.organ_name AS organ_name -- 片区
,A.comm_name AS comm_name -- 项目
,SUM(D.lc_fee_rate_target) AS lc_fee_rate_target -- 人力费率年度目标值
,SUM(B.index_market_target) AS index_market_target-- 收入累计目标值
,SUM(A.lc_target_fee) AS lc_target_fee -- 人力成本累计目标值
,SUM(C.lc_fee_rate_target) AS lc_fee_rate_target -- 人力成本费率目标值
,SUM(B.index_income_fact) AS index_income_fact -- 实际收入累计值
,SUM(A.lc_total_fee) AS lc_total_fee -- 人力成本累计实际
,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 -- 费率实际值
FROM
( -- 费控人力行政成本填报
SELECT
organ_code -- 片区id
,organ_name -- 片区名称
,comm_id -- 项目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 budget_amount ELSE 0 END),0) AS lc_target_fee -- 人力成本预算费用
,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END),0) AS ac_total_fee -- 行政成本费用
,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN budget_amount ELSE 0 END),0) AS ac_target_fee -- 行政成本预算费用
from dw.ods_cost_collection_lc_ac
WHERE ym >= '${p_startym}'
AND ym <= '${p_ym}'
GROUP BY organ_code, organ_name, comm_id, comm_name
)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
LEFT JOIN
(-- 公司实际收入
SELECT
organ_code
,comm_id
,SUM(index_market_target) AS index_market_target -- 收入目标值
,SUM(index_income_fact) AS index_income_fact -- 实际收入
FROM ods_caiwu_feecollection
WHERE category = '物业'
AND yr_month >= '${p_startym}'
AND yr_month <= '${p_ym}'
GROUP BY
organ_code,comm_id
)B
ON A1.organ_code = B.organ_code
AND A1.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
LEFT JOIN
(-- 费控年度目标值
SELECT
organ_code
,comm_id
,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
)D
ON A.organ_code = D.organ_code
AND A.comm_id = D.comm_id
WHERE 1 = 1
${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
GROUP BY A.organ_name
,A.comm_name
${if(p_type='人力',"","*/")}
${if(p_type='行政',"","/*")}
SELECT
A.organ_name AS organ_name -- 片区
,A.comm_name AS comm_name -- 项目
,SUM(D.ac_fee_rate_target) AS lc_fee_rate_target -- 人力费率年度目标值
,SUM(B.index_market_target) AS index_market_target-- 收入累计目标值
,SUM(A.ac_target_fee) AS lc_target_fee -- 人力成本累计目标值
,SUM(C.ac_fee_rate_target) AS lc_fee_rate_target -- 人力成本费率目标值
,SUM(B.index_income_fact) AS index_income_fact -- 实际收入累计值
,SUM(A.ac_total_fee) AS lc_total_fee -- 人力成本累计实际
,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 -- 费率实际值
FROM
( -- 费控人力行政成本填报
SELECT
organ_code -- 片区id
,organ_name -- 片区名称
,comm_id -- 项目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 budget_amount ELSE 0 END),0) AS lc_target_fee -- 人力成本预算费用
,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END),0) AS ac_total_fee -- 行政成本费用
,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN budget_amount ELSE 0 END),0) AS ac_target_fee -- 行政成本预算费用
from dw.ods_cost_collection_lc_ac
WHERE ym >= '${p_startym}'
AND ym <= '${p_ym}'
GROUP BY organ_code, organ_name, comm_id, comm_name
)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
LEFT JOIN
(-- 公司实际收入
SELECT
organ_code
,comm_id
,SUM(index_market_target) AS index_market_target -- 收入目标值
,SUM(index_income_fact) AS index_income_fact -- 实际收入
FROM ods_caiwu_feecollection
WHERE category = '物业'
AND yr_month >= '${p_startym}'
AND yr_month <= '${p_ym}'
GROUP BY
organ_code,comm_id
)B
ON A1.organ_code = B.organ_code
AND A1.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
LEFT JOIN
(-- 费控年度目标值
SELECT
organ_code
,comm_id
,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
)D
ON A.organ_code = D.organ_code
AND A.comm_id = D.comm_id
WHERE 1 = 1
${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
GROUP BY A.organ_name
,A.comm_name
${if(p_type='行政',"","*/")}

View File

@ -42,6 +42,70 @@ GROUP BY nld
-- 年龄分布
-- 年龄30岁30岁≤年龄40岁40岁≤年龄50岁50岁≤年龄60岁60岁≤年龄65岁年龄≥65岁
SELECT
CASE WHEN A.nl < 30.00 THEN '年龄30岁'
WHEN A.nl >= 30.00 AND A.nl < 40.00 THEN '30岁≤年龄40岁'
WHEN A.nl >= 40.00 AND A.nl < 50.00 THEN '40岁≤年龄50岁'
WHEN A.nl >= 50.00 AND A.nl < 60.00 THEN '50岁≤年龄60岁'
WHEN A.nl >= 60.00 AND A.nl < 65.00 THEN '60岁≤年龄65岁'
WHEN A.nl >= 65.00 THEN '年龄≥65岁'
END AS nld
,count(1) AS sl
FROM
(
SELECT
pq
,xm
,nl
FROM ods_hr_view_zaizhi_user_d
WHERE ny <= '${p_ym}'
AND ny >= '${p_startym}'
)A
LEFT JOIN
(
SELECT
organ_code -- erp片区编码
,organ_name -- erp片区名称
,hr_organ_id -- hr片区编码
,hr_organ_name -- hr片区名称
,hr_comm_id -- hr项目id
,hr_comm_name -- hr项目名称
FROM dim_organ_mapping
WHERE length(hr_comm_id) > 0
GROUP BY
organ_code
,organ_name
,hr_organ_id
,hr_organ_name
,hr_comm_id
,hr_comm_name
UNION ALL
SELECT
'0000' AS organ_code -- erp片区编码
,'' AS organ_name -- erp片区名称
,'153' AS hr_organ_id -- hr片区编码
,'领悦集团总部' AS hr_organ_name -- hr片区名称
,'153' AS hr_comm_id -- hr项目id
,'领悦集团总部' AS hr_comm_name -- hr项目名称
FROM dual
)B
ON A.pq = B.hr_organ_id
and A.xm = b.hr_comm_id
where 1 = 1
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+ p_area +"')", "")}
GROUP BY
CASE WHEN nl < 30.00 THEN '年龄30岁'
WHEN nl >= 30.00 AND nl < 40.00 THEN '30岁≤年龄40岁'
WHEN nl >= 40.00 AND nl < 50.00 THEN '40岁≤年龄50岁'
WHEN nl >= 50.00 AND nl < 60.00 THEN '50岁≤年龄60岁'
WHEN nl >= 60.00 AND nl < 65.00 THEN '60岁≤年龄65岁'
WHEN nl >= 65.00 THEN '年龄≥65岁'
END
-- ======================================
-- 司龄分布
-- ======================================
@ -84,9 +148,69 @@ where 1 = 1
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
GROUP BY sld
-- 司龄3个月内3个月≤司龄1年1年≤司龄3年3年≤司龄5年5年≤司龄10年10年≤司龄15年司龄≥15年
SELECT
CASE WHEN A.sl < 0.30 THEN '司龄3个月内'
WHEN A.sl >= 0.30 AND A.sl < 1.00 THEN '3个月≤司龄1年'
WHEN A.sl >= 1.00 AND A.sl < 3.00 THEN '1年≤司龄3年'
WHEN A.sl >= 3.00 AND A.sl < 5.00 THEN '3年≤司龄5年'
WHEN A.sl >= 5.00 AND A.sl < 10.00 THEN '5年≤司龄10年'
WHEN A.sl >= 10.00 AND A.sl < 15.00 THEN '10年≤司龄15年'
WHEN A.sl >= 15.00 THEN '司龄≥15年'
END AS sld
,count(1) AS sl
FROM
(
SELECT
pq
,xm
,sl
FROM ods_hr_view_zaizhi_user_d
WHERE ny <= '${p_ym}'
AND ny >= '${p_startym}'
)A
LEFT JOIN
(
SELECT
organ_code -- erp片区编码
,organ_name -- erp片区名称
,hr_organ_id -- hr片区编码
,hr_organ_name -- hr片区名称
,hr_comm_id -- hr项目id
,hr_comm_name -- hr项目名称
FROM dim_organ_mapping
WHERE length(hr_comm_id) > 0
GROUP BY
organ_code
,organ_name
,hr_organ_id
,hr_organ_name
,hr_comm_id
,hr_comm_name
UNION ALL
SELECT
'0000' AS organ_code -- erp片区编码
,'' AS organ_name -- erp片区名称
,'153' AS hr_organ_id -- hr片区编码
,'领悦集团总部' AS hr_organ_name -- hr片区名称
,'153' AS hr_comm_id -- hr项目id
,'领悦集团总部' AS hr_comm_name -- hr项目名称
FROM dual
)B
ON A.pq = B.hr_organ_id
and A.xm = b.hr_comm_id
where 1 = 1
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+ p_area +"')", "")}
GROUP BY
CASE WHEN A.sl < 0.30 THEN '司龄3个月内'
WHEN A.sl >= 0.30 AND A.sl < 1.00 THEN '3个月≤司龄1年'
WHEN A.sl >= 1.00 AND A.sl < 3.00 THEN '1年≤司龄3年'
WHEN A.sl >= 3.00 AND A.sl < 5.00 THEN '3年≤司龄5年'
WHEN A.sl >= 5.00 AND A.sl < 10.00 THEN '5年≤司龄10年'
WHEN A.sl >= 10.00 AND A.sl < 15.00 THEN '10年≤司龄15年'
WHEN A.sl >= 15.00 THEN '司龄≥15年'
END
-- ======================================
-- 学历分布
@ -132,6 +256,54 @@ where 1 = 1
GROUP BY xl
SELECT
A.xlmc
,count(1) AS sl
FROM
(
SELECT
pq
,xm
,xlmc
FROM ods_hr_view_zaizhi_user_d
WHERE ny <= '${p_ym}'
AND ny >= '${p_startym}'
)A
LEFT JOIN
(
SELECT
organ_code -- erp片区编码
,organ_name -- erp片区名称
,hr_organ_id -- hr片区编码
,hr_organ_name -- hr片区名称
,hr_comm_id -- hr项目id
,hr_comm_name -- hr项目名称
FROM dim_organ_mapping
WHERE length(hr_comm_id) > 0
GROUP BY
organ_code
,organ_name
,hr_organ_id
,hr_organ_name
,hr_comm_id
,hr_comm_name
UNION ALL
SELECT
'0000' AS organ_code -- erp片区编码
,'' AS organ_name -- erp片区名称
,'153' AS hr_organ_id -- hr片区编码
,'领悦集团总部' AS hr_organ_name -- hr片区名称
,'153' AS hr_comm_id -- hr项目id
,'领悦集团总部' AS hr_comm_name -- hr项目名称
FROM dual
)B
ON A.pq = B.hr_organ_id
and A.xm = b.hr_comm_id
where 1 = 1
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+ p_area +"')", "")}
GROUP BY
A.xlmc
-- ======================================
-- 职务角色
@ -176,7 +348,63 @@ where 1 = 1
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
GROUP BY zwje
-- 总部职能中心/一级部门负责人及以上人员
-- 总部二级职能部门负责人
-- 片区负责人
-- 片区职能部门负责人
-- 项目负责人
-- 项目部门负责人
-- 案场负责人
-- 案场部门负责人
-- 员工
SELECT
zwmc AS zwje
,count(1) AS sl
FROM
(
SELECT
pq
,xm
,zwmc
FROM ods_hr_view_zaizhi_user_d
WHERE ny <= '${p_ym}'
AND ny >= '${p_startym}'
)A
LEFT JOIN
(
SELECT
organ_code -- erp片区编码
,organ_name -- erp片区名称
,hr_organ_id -- hr片区编码
,hr_organ_name -- hr片区名称
,hr_comm_id -- hr项目id
,hr_comm_name -- hr项目名称
FROM dim_organ_mapping
WHERE length(hr_comm_id) > 0
GROUP BY
organ_code
,organ_name
,hr_organ_id
,hr_organ_name
,hr_comm_id
,hr_comm_name
UNION ALL
SELECT
'0000' AS organ_code -- erp片区编码
,'' AS organ_name -- erp片区名称
,'153' AS hr_organ_id -- hr片区编码
,'领悦集团总部' AS hr_organ_name -- hr片区名称
,'153' AS hr_comm_id -- hr项目id
,'领悦集团总部' AS hr_comm_name -- hr项目名称
FROM dual
)B
ON A.pq = B.hr_organ_id
and A.xm = b.hr_comm_id
where 1 = 1
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+ p_area +"')", "")}
GROUP BY
A.zwmc
@ -226,6 +454,53 @@ GROUP BY swtx
SELECT
A.zycjname
,count(1) AS sl
FROM
(
SELECT
pq
,xm
,zycjname
FROM ods_hr_view_zaizhi_user_d
WHERE ny <= '${p_ym}'
AND ny >= '${p_startym}'
)A
LEFT JOIN
(
SELECT
organ_code -- erp片区编码
,organ_name -- erp片区名称
,hr_organ_id -- hr片区编码
,hr_organ_name -- hr片区名称
,hr_comm_id -- hr项目id
,hr_comm_name -- hr项目名称
FROM dim_organ_mapping
WHERE length(hr_comm_id) > 0
GROUP BY
organ_code
,organ_name
,hr_organ_id
,hr_organ_name
,hr_comm_id
,hr_comm_name
UNION ALL
SELECT
'0000' AS organ_code -- erp片区编码
,'' AS organ_name -- erp片区名称
,'153' AS hr_organ_id -- hr片区编码
,'领悦集团总部' AS hr_organ_name -- hr片区名称
,'153' AS hr_comm_id -- hr项目id
,'领悦集团总部' AS hr_comm_name -- hr项目名称
FROM dual
)B
ON A.pq = B.hr_organ_id
and A.xm = b.hr_comm_id
where 1 = 1
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+ p_area +"')", "")}
GROUP BY
A.zycjname
-- ======================================
-- 一级专业条线
@ -271,6 +546,60 @@ where 1 = 1
GROUP BY zytx
;
SELECT
A.zytxmc
,count(1) AS sl
FROM
(
SELECT
pq
,xm
,zytxmc
FROM ods_hr_view_zaizhi_user_d
WHERE ny <= '${p_ym}'
AND ny >= '${p_startym}'
)A
LEFT JOIN
(
SELECT
organ_code -- erp片区编码
,organ_name -- erp片区名称
,hr_organ_id -- hr片区编码
,hr_organ_name -- hr片区名称
,hr_comm_id -- hr项目id
,hr_comm_name -- hr项目名称
FROM dim_organ_mapping
WHERE length(hr_comm_id) > 0
GROUP BY
organ_code
,organ_name
,hr_organ_id
,hr_organ_name
,hr_comm_id
,hr_comm_name
UNION ALL
SELECT
'0000' AS organ_code -- erp片区编码
,'' AS organ_name -- erp片区名称
,'153' AS hr_organ_id -- hr片区编码
,'领悦集团总部' AS hr_organ_name -- hr片区名称
,'153' AS hr_comm_id -- hr项目id
,'领悦集团总部' AS hr_comm_name -- hr项目名称
FROM dual
)B
ON A.pq = B.hr_organ_id
and A.xm = b.hr_comm_id
where 1 = 1
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+ p_area +"')", "")}
GROUP BY
A.zytxmc
-- ======================================
-- 人员明细
-- ======================================
@ -349,4 +678,9 @@ LEFT JOIN
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 +"')", "")}
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+ p_area +"')", "")}
-- ======================================
-- 使用ods_hr_view_zaizhi_user_d表计算人员分布占比
-- ======================================