leading-project/finereport/kanban/pc/人力.sql

2156 lines
75 KiB
MySQL
Raw Normal View History

2024-10-25 15:13:36 +08:00
-- ======================================
-- HR组织机构
-- ======================================
WITH one_department AS(
SELECT
id
,subcompanyname
FROM ods_hr_hrmsubcompany_d
WHERE tlevel = '1'
),
sec_department AS
(
SELECT
b.id AS one_department_code
,b.subcompanyname AS one_department_name
,a.id AS sec_department_code
,a.subcompanyname AS sec_department_name
FROM
(
SELECT
id
,subcompanyname
,supsubcomid
FROM ods_hr_hrmsubcompany_d
WHERE tlevel = '2'
)A
LEFT JOIN one_department B
ON A.supsubcomid = B.id
),
third_department AS
(
SELECT
b.one_department_code AS one_department_code
,b.one_department_name AS one_department_name
,b.sec_department_code AS sec_department_code
,b.sec_department_name AS sec_department_name
,a.id AS third_department_code
,a.subcompanyname AS third_department_name
FROM
(
SELECT
id
,subcompanyname
,supsubcomid
FROM ods_hr_hrmsubcompany_d
WHERE tlevel = '3'
)A
LEFT JOIN sec_department B
ON A.supsubcomid = B.sec_department_code
)
SELECT
one_department_code
,one_department_name
,sec_department_code
,sec_department_name
,third_department_code
,third_department_name
FROM third_department
;
-- ======================================
-- report_指标卡_在职人数
-- ======================================
SELECT
SUM(zzs) AS SL
2024-10-25 15:13:36 +08:00
FROM
(
SELECT
A1.pq
,A1.xm
,SUM(A1.zzs) as zzs
FROM
2024-10-25 15:13:36 +08:00
(
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
2024-10-25 15:13:36 +08:00
)A
LEFT JOIN
2024-10-25 15:13:36 +08:00
(
SELECT
organ_code
,organ_name
,hr_organ_id
,hr_organ_name
,hr_comm_id
,hr_comm_name
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项目名称
2024-10-25 15:13:36 +08:00
)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,"','")+"')", "")}
2024-10-25 15:13:36 +08:00
-- ======================================
-- 指标卡_离职人数
-- ======================================
SELECT
SUM(lzrs) AS SL
FROM
(
SELECT
A1.pq AS pq
,A1.xm AS xm
,SUM(A1.lzrs) AS lzrs
FROM
2024-10-25 15:13:36 +08:00
(
SELECT pq -- 片区
, xm -- 项目
, CONCAT(nd, '-', yd) AS ym -- 年月
, lzrs -- 离职人数
2024-10-25 15:13:36 +08:00
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
2024-10-25 15:13:36 +08:00
)A
LEFT JOIN
(
SELECT
organ_code
,organ_name
,hr_organ_id
,hr_organ_name
,hr_comm_id
,hr_comm_name
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项目名称
2024-10-25 15:13:36 +08:00
)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,"','")+"')", "")}
2024-10-25 15:13:36 +08:00
-- ======================================
-- 指标卡_人力成本/行政成本
2024-10-25 15:13:36 +08:00
-- ======================================
SELECT
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 organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
2024-10-25 15:13:36 +08:00
-- ======================================
-- 员工满编率柱状图
-- ======================================
2024-10-25 15:13:36 +08:00
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
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,"','")+"')", "")}
group by
yd
2024-10-25 15:13:36 +08:00
-- ======================================
-- 员工满编率排名
-- ======================================
-- 片区排名
${IF(LEN(p_area)=0,"", "/*")}
2024-10-25 15:13:36 +08:00
SELECT
T1.organ_comm AS organ_comm
,ROW_NUMBER() OVER(ORDER BY T1.RATE DESC)
,T1.rate
,T1.full_rate_target AS target_rate
2024-10-25 15:13:36 +08:00
FROM
(
2024-10-25 15:13:36 +08:00
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
2024-10-25 15:13:36 +08:00
FROM
(
2024-10-25 15:13:36 +08:00
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}'
2024-10-25 15:13:36 +08:00
)A
LEFT JOIN
2024-10-25 15:13:36 +08:00
(
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 A.pq = C.organ_code
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
(
2024-10-25 15:13:36 +08:00
SELECT
organ_code
,organ_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
,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项目名称
2024-10-25 15:13:36 +08:00
)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 A.pq = C.organ_code
AND A.xm = C.comm_id
WHERE 1=1
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
GROUP BY
B.hr_comm_name
)T1
2024-10-25 15:13:36 +08:00
${IF(LEN(p_area)>0,"", "*/")}
2024-10-25 15:13:36 +08:00
-- ======================================
-- 员工离职原因占比
-- ======================================
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 -- 片区
2024-10-25 15:13:36 +08:00
,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
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,"','")+"')", "")}
2024-10-25 15:13:36 +08:00
-- ======================================
-- 人力行政成本费率柱状图
-- ======================================
${if(p_type='人力',"","/*")}
SELECT
T1.yr_month AS yr_month
,'人力成本' AS name
,'人力成本费率' AS name_rate
,T1.lc_total_fee AS total_fee -- 人力成本
2024-10-25 15:13:36 +08:00
,T1.index_income_fact AS index_income_fact -- 实际收入
,T1.lc_total_fee / T1.index_income_fact AS fee_rate -- 人力成本费率
2024-10-25 15:13:36 +08:00
FROM
(
SELECT
A.ym AS yr_month
,A.lc_total_fee AS lc_total_fee
2024-10-25 15:13:36 +08:00
,b.index_income_fact AS index_income_fact
FROM
(
-- 费控人力行政成本填报
2024-10-25 15:13:36 +08:00
SELECT
organ_code
,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
2024-10-25 15:13:36 +08:00
)A
LEFT JOIN
(-- 公司实际收入
SELECT
yr_month
,organ_code
,SUM(index_income_fact) AS index_income_fact -- 实际收入
2024-10-25 15:13:36 +08:00
FROM ods_caiwu_feecollection
WHERE category = '物业'
AND LEFT(yr_month,4) = left('${p_ym}',4)
GROUP BY
yr_month
,organ_code
2024-10-25 15:13:36 +08:00
)B
ON A.ym = 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,"','")+"')", "")}
2024-10-25 15:13:36 +08:00
)T1
ORDER BY T1.yr_month
2024-10-25 15:13:36 +08:00
${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 -- 人力成本
2024-10-25 15:13:36 +08:00
,T1.index_income_fact AS index_income_fact -- 实际收入
,T1.ac_total_fee / T1.index_income_fact AS fee_rate -- 人力成本费率
2024-10-25 15:13:36 +08:00
FROM
(
SELECT
A.ym AS yr_month
,A.ac_total_fee AS ac_total_fee -- 人力成本
2024-10-25 15:13:36 +08:00
,B.index_income_fact AS index_income_fact -- 实际收入
FROM
(
-- 费控人力行政成本填报
SELECT
organ_code
,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
2024-10-25 15:13:36 +08:00
) A
LEFT JOIN
(-- 公司实际收入
SELECT
yr_month
,organ_code
,SUM(index_income_fact) AS index_income_fact -- 实际收入
2024-10-25 15:13:36 +08:00
FROM ods_caiwu_feecollection
WHERE category = '物业'
AND LEFT(yr_month,4) = left('${p_ym}',4)
GROUP BY
yr_month
,organ_code
2024-10-25 15:13:36 +08:00
)B
ON A.ym = B.yr_month
AND A.organ_code = B.organ_code
2024-10-25 15:13:36 +08:00
WHERE 1=1
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
2024-10-25 15:13:36 +08:00
)T1
ORDER BY T1.yr_month
${if(p_type='行政',"","*/")}
-- ======================================
-- 人力行政成本费率排名
-- ======================================
-- 这里无法筛选片区时展示对应片区下项目费率的排名
-- 原因: 费控成本均在各片区智能下普通项目没有费用可使用如下sql查询:
-- 片区排名
${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}'
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 left(yr_month,4) = left('${p_ym}',4)
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
2024-10-25 15:13:36 +08:00
${if(and(len(p_area)=0,p_type='人力')," -- 片区排名开始", "*/")}
2024-10-25 15:13:36 +08:00
${if(and(len(p_area)=0,p_type='行政')," -- 片区排名开始", "/*")}
2024-10-25 15:13:36 +08:00
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 -- 费率排名
,A.lc_total_fee / B.index_income_fact AS fee_rate -- 行政成本费率
,C.ac_fee_rate_target AS target_fee_rate -- 费率目标
2024-10-25 15:13:36 +08:00
FROM
( -- 费控人力行政成本填报
2024-10-25 15:13:36 +08:00
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}'
GROUP BY organ_code,organ_name
2024-10-25 15:13:36 +08:00
)A
LEFT JOIN
(-- 公司实际收入
SELECT
organ_code
,SUM(index_income_fact) AS index_income_fact -- 实际收入
2024-10-25 15:13:36 +08:00
FROM ods_caiwu_feecollection
WHERE category = '物业'
AND LEFT(yr_month,4) = left('${p_ym}',4)
AND yr_month <= '${p_ym}'
2024-10-25 15:13:36 +08:00
GROUP BY
organ_code
2024-10-25 15:13:36 +08:00
)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='行政')," -- 片区排名开始", "*/")}
2024-10-25 15:13:36 +08:00
-- 项目排名
2024-10-25 15:13:36 +08:00
${if(and(len(p_area)>0,p_type='人力')," -- 片区排名开始", "/*")}
2024-10-25 15:13:36 +08:00
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 -- 费率目标
2024-10-25 15:13:36 +08:00
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 -- 实际收入
-- ,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.lc_total_fee) / SUM(B.index_income_fact) END AS fee_rate
,SUM(C.lc_fee_rate_target) AS target_fee_rate -- 费率目标
2024-10-25 15:13:36 +08:00
FROM
( -- 费控人力行政成本填报
2024-10-25 15:13:36 +08:00
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
)A
LEFT JOIN
(-- 公司实际收入
SELECT
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)
AND yr_month <= '${p_ym}'
2024-10-25 15:13:36 +08:00
GROUP BY
organ_code,comm_id
)B
ON A.organ_code = B.organ_code
AND A.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
${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
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
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
2024-10-25 15:13:36 +08:00
)A
LEFT JOIN
2024-10-25 15:13:36 +08:00
(-- 公司实际收入
SELECT
organ_code
,comm_id
2024-10-25 15:13:36 +08:00
,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}'
2024-10-25 15:13:36 +08:00
GROUP BY
organ_code,comm_id
2024-10-25 15:13:36 +08:00
)B
ON A.organ_code = B.organ_code
AND A.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
${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
GROUP BY A.comm_name
)T
${if(and(len(p_area)>0,p_type='行政')," -- 片区排名开始", "*/")}
2024-10-25 15:13:36 +08:00
2024-10-27 11:54:22 +08:00
-- ======================================
-- 离职率排名
-- ======================================
-- 片区
${IF(LEN(p_area)=0,"", "/*")}
2024-10-27 11:54:22 +08:00
SELECT
T.hr_organ_name AS hr_organ_name
,T.lz_rate AS lz_rate
,T.lz_rate_target AS lz_rate_target
2024-10-27 11:54:22 +08:00
,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
2024-10-27 11:54:22 +08:00
FROM
(
SELECT
pq -- 片区
2024-10-27 11:54:22 +08:00
,xm -- 项目
,SUM(zzrs) AS zzrs -- 当天在职人数
,SUM(zlzrs) AS zlzrs -- 当天总离职人数
2024-10-27 11:54:22 +08:00
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
)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
2024-10-27 11:54:22 +08:00
(
SELECT
organ_code
,lz_rate_target -- 离职率目标
FROM ods_hr_collection_target_organ
WHERE ym = '${p_ym}'
)C
ON A.pq = C.organ_code
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
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}'
AND pq not in('89','267') -- 排除了佳美、悦汇
GROUP BY pq, xm
)A
LEFT JOIN
(
2024-10-27 11:54:22 +08:00
SELECT
organ_code
,organ_name
,hr_organ_id
,hr_organ_name
,hr_comm_id
,hr_comm_name
FROM dim_organ_mapping
WHERE length(hr_comm_id) > 0
2024-10-27 11:54:22 +08:00
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
LEFT JOIN
(
SELECT
comm_id
,organ_code
,lz_rate_target -- 离职率目标
FROM ods_hr_collection_target
WHERE ym = '${p_ym}'
)C
ON A.pq = C.organ_code
AND A.xm = C.comm_id
2024-10-27 11:54:22 +08:00
where 1 = 1
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
GROUP BY
B.hr_comm_name
2024-10-28 17:31:37 +08:00
)T
${IF(LEN(p_area)>0,"", "*/")}
2024-10-28 17:31:37 +08:00
-- ======================================
-- 指标卡_人力成本费率/目标值
-- ======================================
-- 整体
${IF(LEN(p_area)=0,"", "/*")}
2024-10-28 17:31:37 +08:00
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 -- 行政成本费率目标占比
2024-10-28 17:31:37 +08:00
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 -- 人力成本费率
,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 -- 行政成本费率
,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 -- 行政成本费率
2024-10-28 17:31:37 +08:00
FROM
(
-- 费控人力行政成本填报
2024-10-28 17:31:37 +08:00
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
2024-10-28 17:31:37 +08:00
)A
LEFT JOIN
(-- 公司实际收入
SELECT
organ_code
,SUM(index_income_fact) AS index_income_fact -- 实际收入
2024-10-28 17:31:37 +08:00
FROM ods_caiwu_feecollection
WHERE category = '物业'
AND left(yr_month,4) = left('${p_ym}',4)
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
2024-10-28 17:31:37 +08:00
WHERE 1 = 1
${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
)T
${IF(LEN(p_area)>0,"", "*/")}
2024-10-28 17:31:37 +08:00
-- ======================================
-- 指标卡_在职人数满编率/目标值
2024-10-28 17:31:37 +08:00
-- ======================================
-- 整体
${IF(LEN(p_area) = 0,"", "/*")}
2024-10-28 17:31:37 +08:00
SELECT
sum(T.full_rate) AS full_rate -- 满编率
,sum(T.full_rate_target) AS full_rate_target -- 满编率目标
,CASE WHEN sum(T.full_rate_target) =0 THEN 0
ELSE sum(T.full_rate) / sum(T.full_rate_target) END AS target_rate -- 目标占比
2024-10-28 17:31:37 +08:00
FROM
(
SELECT
CASE WHEN SUM(bzs) = 0 THEN 0 ELSE SUM(zzs) / SUM(bzs) END AS full_rate -- 满编率
,0 AS full_rate_target -- 满编率目标值
2024-10-28 17:31:37 +08:00
FROM
(
SELECT
SUM(A1.bzs) AS bzs
,SUM(A1.zzs) AS zzs
FROM
(
SELECT
ny
,CASE WHEN ny >= '2024-10' THEN zzs ELSE 0 end AS zzs-- 在职数
,bzs -- 编制数
FROM ods_hr_view_mbl_d
WHERE pq NOT IN ('89', '267') -- 排除了佳美、悦汇
UNION ALL
SELECT
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
)A1
WHERE A1.ny = '${p_ym}'
2024-10-28 17:31:37 +08:00
)A
UNION ALL
SELECT
0 AS full_rate -- 满编率
,full_rate_target -- 满编率目标
FROM ods_hr_collection_target_overall
WHERE ym = '${p_ym}'
)T
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
${IF(LEN(p_area) = 0,"", "*/")}
-- 片区
${IF(LEN(p_area) > 0,"", "/*")}
SELECT
CASE WHEN SUM(A.bzs) = 0 THEN 0 ELSE SUM(A.zzs) / SUM(A.bzs) END AS full_rate -- 满编率
,SUM(C.full_rate_target) AS full_rate_target -- 满编率目标值
,CASE WHEN (SUM(A.bzs) = 0 OR coalesce(SUM(C.full_rate_target) ,0) = 0)THEN 0
ELSE (SUM(A.zzs) / SUM(A.bzs)) / SUM(C.full_rate_target) END AS target_rate -- 满编率目标占比
FROM
(
SELECT
A1.ny AS ny
,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 -- 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 -- erp片区code
,full_rate_target -- 满编率目标
FROM ods_hr_collection_target -- 目标值收集
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,"", "*/")}
2024-10-28 17:31:37 +08:00
-- ======================================
-- 指标卡_离职人数离职率/目标值
-- ======================================
-- 整体
${IF(LEN(p_area) = 0,"", "/*")}
2024-10-28 17:31:37 +08:00
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 -- 离职率目标
2024-10-28 17:31:37 +08:00
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}'
2024-10-28 17:31:37 +08:00
)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
2024-10-28 17:31:37 +08:00
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
2024-10-28 17:31:37 +08:00
where 1 = 1
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
${IF(LEN(p_area) > 0,"", "*/")}