leading-project/dw/dws/dws_cost_ac_summary_d.sql

354 lines
14 KiB
MySQL
Raw Normal View History

2024-07-21 22:06:45 +08:00
DROP TABLE IF EXISTS dw.dws_cost_ac_summary_d;
CREATE TABLE IF NOT EXISTS dw.dws_cost_ac_summary_d (
2024-11-27 11:07:58 +08:00
yearname VARCHAR(50) COMMENT ''
,monthname VARCHAR(50) COMMENT ''
,organ_code VARCHAR(100) COMMENT '片区ID'
,organ_name VARCHAR(100) COMMENT '片区名称'
,dimsubjectcode VARCHAR(100) COMMENT '组织机构编码'
,dimsubjectname VARCHAR(100) COMMENT '组织机构名称'
,salary_fee VARCHAR(100) COMMENT '工资'
,year_performance_fee VARCHAR(100) COMMENT '季度/年终绩效'
,social_insur_fee VARCHAR(100) COMMENT '社会保险'
,accumu_fund_fee VARCHAR(100) COMMENT '公积金'
,liab_insur_fee VARCHAR(100) COMMENT '雇主责任险'
,smock_fee VARCHAR(100) COMMENT '工作服'
,train_fee VARCHAR(100) COMMENT '培训'
,recr_fee VARCHAR(100) COMMENT '招聘'
,emp_bene_fee VARCHAR(100) COMMENT '员工福利'
,laborrela_fee VARCHAR(100) COMMENT '劳动关系成本'
,other_fee VARCHAR(100) COMMENT '其他费用'
,total_fee VARCHAR(100) COMMENT '当期小计'
,fee_type VARCHAR(100) COMMENT '费用类型'
)COMMENT = '费控人力成本科目汇总表';
2024-07-21 22:06:45 +08:00
INSERT into dw.dws_cost_ac_summary_d
SELECT
A.yearname AS yearname -- 年
,A.monthname AS monthname -- 月
,A.organ_code AS organ_code -- 片区ID
,A.organ_name AS organ_name -- 片区名称
,A.dimsubjectcode AS dimsubjectcode -- 组织机构编码
,A.dimsubjectname AS dimsubjectname -- 组织机构名称
,SUM(A.salary_fee) AS salary_fee -- 工资
,SUM(A.year_performance_fee) AS year_performance_fee -- 季度/年终绩效
,SUM(A.social_insur_fee) AS social_insur_fee -- 社会保险
,SUM(A.accumu_fund_fee) AS accumu_fund_fee -- 公积金
,SUM(A.liab_insur_fee) AS liab_insur_fee -- 雇主责任险
,SUM(A.smock_fee) AS smock_fee -- 工作服
,SUM(A.train_fee) AS train_fee -- 培训
,SUM(A.recr_fee) AS recr_fee -- 招聘
,SUM(A.emp_bene_fee) AS emp_bene_fee -- 员工福利
,SUM(A.laborrela_fee) AS laborrela_fee -- 劳动关系成本
,SUM(A.other_fee) AS other_fee -- 其他费用
,SUM(A.total_fee) AS total_fee -- 当期小计
,A.fee_type AS fee_type -- 费用类型
FROM
(
SELECT
yearname -- 年
,monthname -- 月
,organ_code -- 片区ID
,organ_name -- 片区名称
,dimsubjectcode -- 组织机构编码
,dimsubjectname -- 组织机构名称
,CASE WHEN dimaccountcode = 'WY040101'
THEN target_fee
ELSE 0 END AS salary_fee -- 工资
,CASE WHEN dimaccountcode = 'WY040102'
THEN target_fee
ELSE 0 END AS year_performance_fee-- 季度/年终绩效
,CASE WHEN dimaccountcode = 'WY040104'
THEN target_fee
ELSE 0 END AS social_insur_fee -- 社会保险
,CASE WHEN dimaccountcode = 'WY040109'
THEN target_fee
ELSE 0 END AS accumu_fund_fee -- 公积金
,CASE WHEN dimaccountcode = 'WY040112'
THEN target_fee
ELSE 0 END AS liab_insur_fee -- 雇主责任险
,CASE WHEN dimaccountcode = 'WY040111'
THEN target_fee
ELSE 0 END AS smock_fee -- 工作服
,CASE WHEN dimaccountcode = 'WY040107'
THEN target_fee
ELSE 0 END AS train_fee -- 培训
,CASE WHEN dimaccountcode = 'WY040110'
THEN target_fee
ELSE 0 END AS recr_fee -- 招聘
,CASE WHEN dimaccountcode = 'WY040103'
THEN target_fee
ELSE 0 END AS emp_bene_fee -- 员工福利
,CASE WHEN dimaccountcode IN('WY040108','') -- 离职员工补偿
THEN target_fee
ELSE 0 END AS laborrela_fee -- 劳动关系成本
,CASE WHEN dimaccountcode in('WY040105','WY040114','WY040106','WY040113') -- 工会经费,残疾人保障金,职工教育经费,汽车费
THEN target_fee
ELSE 0 END AS other_fee -- 其他费用
,target_fee AS total_fee -- 当期小计
,'目标值' AS fee_type -- 费用类型
from dw.dwd_cost_detail_data_d
where cost_code = 'AC' -- 人力成本
UNION ALL
SELECT
yearname -- 年
,monthname -- 月
,organ_code -- 片区ID
,organ_name -- 片区名称
,dimsubjectcode -- 组织机构编码
,dimsubjectname -- 组织机构名称
,CASE WHEN dimaccountcode = 'WY040101'
THEN actual_fee
ELSE 0 END AS salary_fee -- 工资
,CASE WHEN dimaccountcode = 'WY040102'
THEN actual_fee
ELSE 0 END AS year_performance_fee-- 季度/年终绩效
,CASE WHEN dimaccountcode = 'WY040104'
THEN actual_fee
ELSE 0 END AS social_insur_fee -- 社会保险
,CASE WHEN dimaccountcode = 'WY040109'
THEN actual_fee
ELSE 0 END AS accumu_fund_fee -- 公积金
,CASE WHEN dimaccountcode = 'WY040112'
THEN actual_fee
ELSE 0 END AS liab_insur_fee -- 雇主责任险
,CASE WHEN dimaccountcode = 'WY040111'
THEN actual_fee
ELSE 0 END AS smock_fee -- 工作服
,CASE WHEN dimaccountcode = 'WY040107'
THEN actual_fee
ELSE 0 END AS train_fee -- 培训
,CASE WHEN dimaccountcode = 'WY040110'
THEN actual_fee
ELSE 0 END AS recr_fee -- 招聘
,CASE WHEN dimaccountcode = 'WY040103'
THEN actual_fee
ELSE 0 END AS emp_bene_fee -- 员工福利
,CASE WHEN dimaccountcode IN('WY040108','') -- 离职员工补偿
THEN actual_fee
ELSE 0 END AS laborrela_fee -- 劳动关系成本
,CASE WHEN dimaccountcode in('WY040105','WY040114','WY040106','WY040113') -- 工会经费,残疾人保障金,职工教育经费,汽车费
THEN actual_fee
ELSE 0 END AS other_fee -- 其他费用
,actual_fee AS total_fee -- 当期小计
,'实际值' AS fee_type -- 费用类型
from dw.dwd_cost_detail_data_d
where cost_code = 'AC' -- 人力成本
UNION ALL
SELECT
yearname -- 年
,monthname -- 月
,organ_code -- 片区ID
,organ_name -- 片区名称
,dimsubjectcode -- 组织机构编码
,dimsubjectname -- 组织机构名称
,CASE WHEN dimaccountcode = 'WY040101'
THEN diff_amount
ELSE 0 END AS salary_fee -- 工资
,CASE WHEN dimaccountcode = 'WY040102'
THEN diff_amount
ELSE 0 END AS year_performance_fee-- 季度/年终绩效
,CASE WHEN dimaccountcode = 'WY040104'
THEN diff_amount
ELSE 0 END AS social_insur_fee -- 社会保险
,CASE WHEN dimaccountcode = 'WY040109'
THEN diff_amount
ELSE 0 END AS accumu_fund_fee -- 公积金
,CASE WHEN dimaccountcode = 'WY040112'
THEN diff_amount
ELSE 0 END AS liab_insur_fee -- 雇主责任险
,CASE WHEN dimaccountcode = 'WY040111'
THEN diff_amount
ELSE 0 END AS smock_fee -- 工作服
,CASE WHEN dimaccountcode = 'WY040107'
THEN diff_amount
ELSE 0 END AS train_fee -- 培训
,CASE WHEN dimaccountcode = 'WY040110'
THEN diff_amount
ELSE 0 END AS recr_fee -- 招聘
,CASE WHEN dimaccountcode = 'WY040103'
THEN diff_amount
ELSE 0 END AS emp_bene_fee -- 员工福利
,CASE WHEN dimaccountcode IN('WY040108') -- 离职员工补偿
THEN diff_amount
ELSE 0 END AS laborrela_fee -- 劳动关系成本
,CASE WHEN dimaccountcode in('WY040105','WY040114','WY040106','WY040113') -- 工会经费,残疾人保障金,职工教育经费,汽车费
THEN diff_amount
ELSE 0 END AS other_fee -- 其他费用
,diff_amount AS total_fee -- 当期小计
,'差额' AS fee_type -- 费用类型
from dw.dwd_cost_detail_data_d
where cost_code = 'AC' -- 人力成本
)A
GROUP BY
A.yearname
,A.monthname
,A.organ_code
,A.organ_name
,A.dimsubjectcode
,A.dimsubjectname
,A.fee_type
UNION ALL
select
yearname -- 年
,monthname -- 月
,organ_code -- 片区ID
,organ_name -- 片区名称
,dimsubjectcode -- 组织机构编码
,dimsubjectname -- 组织机构名称
,CASE WHEN SUM(CASE WHEN dimaccountcode = 'WY040101'
THEN target_fee
ELSE 0 END) = 0
THEN '0%'
ELSE CONCAT(ROUND((SUM(CASE WHEN dimaccountcode = 'WY040101'
THEN actual_fee
ELSE 0 END) / SUM(CASE WHEN dimaccountcode = 'WY040101'
THEN target_fee
ELSE 0 END))*100,2),'%') END AS salary_fee -- 工资
,CASE WHEN SUM(CASE WHEN dimaccountcode = 'WY040102'
THEN target_fee
ELSE 0 END) = 0
THEN '0%'
ELSE CONCAT(ROUND((SUM(CASE WHEN dimaccountcode = 'WY040102'
THEN actual_fee
ELSE 0 END) / SUM(CASE WHEN dimaccountcode = 'WY040102'
THEN target_fee
ELSE 0 END))*100,2),'%') END AS year_performance_fee-- 季度/年终绩效
,CASE WHEN SUM(CASE WHEN dimaccountcode = 'WY040104'
THEN target_fee
ELSE 0 END) = 0
THEN '0%'
ELSE CONCAT(ROUND((SUM(CASE WHEN dimaccountcode = 'WY040104'
THEN actual_fee
ELSE 0 END) / SUM(CASE WHEN dimaccountcode = 'WY040104'
THEN target_fee
ELSE 0 END))*100,2),'%') END AS social_insur_fee -- 社会保险
,CASE WHEN SUM(CASE WHEN dimaccountcode = 'WY040109'
THEN target_fee
ELSE 0 END) = 0
THEN '0%'
ELSE CONCAT(ROUND((SUM(CASE WHEN dimaccountcode = 'WY040109'
THEN actual_fee
ELSE 0 END) / SUM(CASE WHEN dimaccountcode = 'WY040109'
THEN target_fee
ELSE 0 END))*100,2),'%') END AS accumu_fund_fee -- 公积金
,CASE WHEN SUM(CASE WHEN dimaccountcode = 'WY040112'
THEN target_fee
ELSE 0 END) = 0
THEN '0%'
ELSE CONCAT(ROUND((SUM(CASE WHEN dimaccountcode = 'WY040112'
THEN actual_fee
ELSE 0 END) / SUM(CASE WHEN dimaccountcode = 'WY040112'
THEN target_fee
ELSE 0 END))*100,2),'%') END AS liab_insur_fee -- 雇主责任险
,CASE WHEN SUM(CASE WHEN dimaccountcode = 'WY040111'
THEN target_fee
ELSE 0 END) = 0
THEN '0%'
ELSE CONCAT(ROUND((SUM(CASE WHEN dimaccountcode = 'WY040111'
THEN actual_fee
ELSE 0 END) / SUM(CASE WHEN dimaccountcode = 'WY040111'
THEN target_fee
ELSE 0 END))*100,2),'%') END AS smock_fee -- 工作服
,CASE WHEN SUM(CASE WHEN dimaccountcode = 'WY040107'
THEN target_fee
ELSE 0 END) = 0
THEN '0%'
ELSE CONCAT(ROUND((SUM(CASE WHEN dimaccountcode = 'WY040107'
THEN actual_fee
ELSE 0 END) / SUM(CASE WHEN dimaccountcode = 'WY040107'
THEN target_fee
ELSE 0 END))*100,2),'%') END AS train_fee -- 培训
,CASE WHEN SUM(CASE WHEN dimaccountcode = 'WY040110'
THEN target_fee
ELSE 0 END) = 0
THEN '0%'
ELSE CONCAT(ROUND((SUM(CASE WHEN dimaccountcode = 'WY040110'
THEN actual_fee
ELSE 0 END) / SUM(CASE WHEN dimaccountcode = 'WY040110'
THEN target_fee
ELSE 0 END))*100,2),'%') END AS recr_fee -- 招聘
,CASE WHEN SUM(CASE WHEN dimaccountcode = 'WY040103'
THEN target_fee
ELSE 0 END) = 0
THEN '0%'
ELSE CONCAT(ROUND((SUM(CASE WHEN dimaccountcode = 'WY040103'
THEN actual_fee
ELSE 0 END) / SUM(CASE WHEN dimaccountcode = 'WY040103'
THEN target_fee
ELSE 0 END))*100,2),'%') END AS emp_bene_fee -- 员工福利
,CASE WHEN SUM(CASE WHEN dimaccountcode = 'WY040108'
THEN target_fee
ELSE 0 END) = 0
THEN '0%'
ELSE CONCAT(ROUND((SUM(CASE WHEN dimaccountcode = 'WY040108'
THEN actual_fee
ELSE 0 END) / SUM(CASE WHEN dimaccountcode = 'WY040108'
THEN target_fee
ELSE 0 END))*100,2),'%') END AS laborrela_fee -- 劳动关系成本
,CASE WHEN SUM(CASE WHEN dimaccountcode in('WY040105','WY040114','WY040106','WY040113')
THEN target_fee
ELSE 0 END) = 0
THEN '0%'
ELSE CONCAT(ROUND((SUM(CASE WHEN dimaccountcode in('WY040105','WY040114','WY040106','WY040113')
THEN actual_fee
ELSE 0 END) / SUM(CASE WHEN dimaccountcode in('WY040105','WY040114','WY040106','WY040113')
THEN target_fee
ELSE 0 END))*100,2),'%') END AS other_fee -- 其他费用
,CASE WHEN SUM(target_fee) = 0
THEN '0%'
ELSE CONCAT(ROUND((SUM(actual_fee) / SUM(target_fee))*100,2),'%') END AS total_fee -- 当期小计
,'执行率' AS fee_type -- 费用类型
from dw.dwd_cost_detail_data_d
where cost_code = 'AC' -- 人力成本
GROUP BY
yearname -- 年
,monthname -- 月
,organ_code -- 片区ID
,organ_name -- 片区名称
,dimsubjectcode -- 组织机构编码
,dimsubjectname -- 组织机构名称
;