leading-project/finereport/kanban/pc/工程.sql

416 lines
13 KiB
MySQL
Raw Normal View History

2024-07-23 21:40:49 +08:00
-- dict_erp片区
SELECT DISTINCT
organ_code AS id,
organ_name AS
FROM dim_organ_mapping
;
2024-07-23 21:40:49 +08:00
-- report_车场启费
select
a.ym, a.organ_code, a.organ_name, a.comm_id, a.comm_name, case when qifei_cost_num > 0 then 1 else 0 end qifei_comm_num
from (
select
ifnull(b.ym,${IF(LEN(p_ym)>0,"'" + p_ym+ "'","null")} ) ym, a.organ_code, a.organ_name, a.comm_id, a.comm_name
,sum(case when ifnull(case when ifnull(pr_total_receivable_amt, 0) = 0 then (case when ifnull(cu_receivable_amt,0) then ifnull(cu_paid_pr_amt,0) else cu_receivable_amt end) else pr_total_receivable_amt end,0) != 0 then 1 else 0 end) qifei_cost_num
from (select distinct organ_code, organ_name, comm_id, comm_name from dim_organ_mapping where comm_id is not null) a
left join (
select * from dwd_finance_fees_serial_d
where MiddleCostCode in ('00010003','00030002')
${IF(LEN(p_ym)>0," AND ym ='" + p_ym+ "'","")}
) b
on a.comm_id = b.commid
group by b.ym, a.organ_code, a.organ_name, a.comm_id, a.comm_name
) a
where 1=1
${IF(LEN(p_area)>0," AND a.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
-- report_单位面积能耗
select
organ_code
, organ_name
, comm_id
, comm_name
, MeterType
, list_ym
,coalesce(Dosage/ContractArea,0) dosage_per_square_meter
from dws_engine_meter_dosage_m a
left join (select * from dim_project_base_info_d) b on a.comm_id = b.CommId
where 1=1
and MeterType = '水表'
${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
${IF(LEN(p_ym)>0," AND list_ym ='" + p_ym+ "'","")}
2024-07-23 21:40:49 +08:00
-- report_设备完好率
SELECT ${if(len(p_area)>0, "comm_id code, comm_name name,","organ_code code, organ_name name,")}
comm_id, comm_name,
good_equipment_num, equipment_num
FROM dws_engine_equipment_in_good_d;
-- 基础指标
select '停车场数量' indicator_name, count(*) indicator_value from dim_carpark_info_d
union all
select '车位数量', count(*) from dim_parking_info_d
union all
select '巡查点位数', count(*) from dim_engine_point_d
union all
select '设施设备总数', count(*) from dim_engine_equipment_d
;
2024-07-23 21:40:49 +08:00
-- 能耗环比
select *
from dws_engine_meter_dosage_m
where left(list_ym,4) = ${left(p_ym,4)}
AND list_ym <> DATE_FORMAT(CURDATE(), '%Y%m')
and MeterType in ('水表','电表')
${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
;
2024-07-23 21:40:49 +08:00
-- 能耗排名
select ${IF(LEN(p_area)>0,"comm_id code, comm_name name,","organ_code code, organ_name name,")} dosage
from dws_engine_meter_dosage_m
where MeterType = '电表'
${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
${IF(LEN(p_ym)>0," AND list_ym ='" + left(p_ym,4) + right(p_ym,2) + "'","")}
order by Dosage desc
limit 5
;
2024-07-23 21:40:49 +08:00
-- 能耗同比
SELECT
organ_code
, organ_name
, comm_id
, comm_name
, MeterType
, list_ym
, Dosage
, Amount
FROM dws_engine_meter_dosage_m
where 1=1
AND list_ym <> DATE_FORMAT(CURDATE(), '%Y%m')
AND list_ym >= '${FORMAT(MONTHDELTA(CONCATENATE(p_ym,"-01"),-60),"yyyyMM")}'
${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
${IF(LEN(p_ym)>0," AND right(list_ym,2) ='" +right(p_ym,2) + "'","")}
and MeterType in ('水表','电表')
order by list_ym asc
;
-- ----------------------------------------------------------------------------------------------------------
2024-07-23 21:40:49 +08:00
-- 设备巡查
select
${IF(LEN(p_area)>0,"organ_code, organ_name, comm_id code, comm_name name,","organ_code code, organ_name name,")}
comm_id, comm_name,
task_ym
, task_finish_num
, task_num
FROM dws_engine_equipment_inspect_task_m
where 1=1
${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
${IF(LEN(p_ym)>0," AND task_ym ='" + left(p_ym,4) + right(p_ym,2) + "'","")}
SELECT
SUM(task_finish_num) / sum(task_num)
FROM dws_engine_equipment_inspect_task_m
where task_ym = '202407';
-- 【erp设备巡检完成率】
select
SUM() AS
,SUM() AS
from
(
select
CommId
,count(0)
,sum(case when TaskStatue=2 then 1 else 0 end)
-- select *
from Tb_Eq_Flow_Task_Inspection where IsClose = 0
and TaskEndTime>='2024-07-01'
and TaskEndTime<='2024-07-23 23:59:59'
-- and TaskStatue='2'
and IsClose=0 group by CommId
)t
;
-- ods
SELECT
count(1) as total_task
,sum(case when TaskStatue = 2 then 1 else 0 end) as finish_task
-- ,sum(case when TaskStatue = 2 then 1 else 0 end) / count(1) as finish_task_rate
-- select *
from dw.ods_erp_tb_eq_flow_task_inspection_d
where IsClose = 0
and TaskEndTime>='2024-07-01'
and TaskEndTime<= '2024-07-23 23:59:59'
-- AND TaskStatue = '2'
and TaskEndTime<= DATE_SUB(CURDATE(),INTERVAL 1 SECOND)
;
-- dwd
select
sum(case when TaskStatue = 2 then 1 else 0 end) task_finish_num
, count(*) task_num
from dw.dwd_engine_equipment_inspection_task_d a
join (select distinct organ_code, organ_name, comm_id, comm_name from dw.dim_organ_mapping where comm_id is not null) b
on a.CommId = b.comm_id
where TaskEndTime <= DATE_SUB(CURDATE(),INTERVAL 1 SECOND)
and TaskEndTime>='2024-07-01'
;
-- 59180 - 59134
-- ---------------------------------------------------------------------------------------------------------------
2024-07-23 21:40:49 +08:00
-- 水电收缴率
select
sum(pr_paid_cu_amt + cu_paid_cu_amt + pr_offset_cu_amt + cu_offset_cu_amt - cu_offset_pr_amt - cu_paid_pr_amt) / sum(cu_receivable_amt + pr_exempt_cu_amt + cu_exempt_cu_amt + pr_total_receivable_amt + pr_total_received_amt + cu_early_exempt_pr_amt + cu_exempt_pr_amt) collection_rate
from dwd_finance_fees_serial_d
where ParentCostCode = '0008'
${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
${IF(LEN(p_ym)>0," AND ym ='" + p_ym+ "'","")}
-- 异常抬杆
select
organ_code , organ_name
, sum(manualOutNum) manualOutNum
, sum(carflow) carflow
, sum(manualOutNum) / sum(carflow) exceptionRate
from dws_engine_stat_exception_rate_w
where yw = (select distinct yw from dws_engine_stat_exception_rate_w order by yw desc limit 1)
group by organ_code , organ_name;
-- ============================================================================================================
-- 单位面积能耗 水
select
organ_code
, organ_name
, comm_id
, comm_name
, MeterType
, list_ym
,coalesce(Dosage/ContractArea,0) dosage_per_square_meter -- 单位面积能耗 水
from dws_engine_meter_dosage_m a
left join (select * from dim_project_base_info_d) b on a.comm_id = b.CommId
where 1=1
and MeterType = '水表'
${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
${IF(LEN(p_ym)>0," AND list_ym ='" + left(p_ym,4) + right(p_ym,2) + "'","")}
;
-- ===================================
-- 基础指标
-- ===================================
SELECT
SUM(CASE WHEN TypeName = 'SpaceNum' THEN CNT ELSE 0 END) AS SpaceNum -- 设备空间数
,SUM(CASE WHEN TypeName = 'ParkingSpaceNUM' THEN CNT ELSE 0 END) AS ParkingSpaceNUM -- 车位数量
,SUM(CASE WHEN TypeName = 'ParkingNum' THEN CNT ELSE 0 END) AS ParkingNum -- 停车场数量
,SUM(CASE WHEN TypeName = 'SpaceTaskNum' THEN CNT ELSE 0 END) AS SpaceTaskNum -- 设备空间任务数
,SUM(CASE WHEN TypeName = 'DeviceNum' THEN CNT ELSE 0 END) AS DeviceNum -- 设备档案数
FROM
(
SELECT
CommID -- 项目ID
,'SpaceNum' AS TypeName
,COUNT(1) AS CNT -- 设备空间数
FROM dw.dim_engine_space_info_d -- 工程设备空间
GROUP BY
CommID
UNION ALL
select
CommID
,'ParkingSpaceNUM' AS TypeName
,COUNT(1) AS CNT -- 车位数量
from dw.dim_parking_info_d a
where exists(select 1 from dw.dim_organ_mapping b where a.CommID = b.comm_id)
GROUP BY
CommID
UNION ALL
SELECT
CommID
,'ParkingNum' AS TypeName
,count(1) AS CNT -- 停车场数量
from dw.dim_carpark_info_d a
-- where exists(select 1 from dw.dim_organ_mapping b where a.CommID = b.comm_id)
GROUP BY
CommID
UNION ALL
SELECT
CommID
,'SpaceTaskNum' AS TypeName
,count(1) AS CNT -- 设备空间任务数
from dw.ods_erp_tb_eq_plan_inspection_d a
where a.IsEnable=1 and a.IsAuditing=1
-- where exists(select 1 from dw.dim_organ_mapping b where a.CommID = b.comm_id)
GROUP BY
CommID
UNION ALL
SELECT
CommID
,'DeviceNum' AS TypeName
,COUNT(1) AS CNT
from dw.dim_engine_equipment_d -- 设备档案数
GROUP BY
CommID
)A
LEFT JOIN
(
SELECT
organ_code -- 片区code
,organ_name -- 片区名称
,comm_id -- 项目id
,comm_name -- 项目名称
FROM dw.dim_organ_mapping -- 组织架构映射表
GROUP BY
organ_code -- 片区code
,organ_name -- 片区名称
,comm_id -- 项目id
,comm_name -- 项目名称
)B
ON A.CommID = B.comm_id
${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
;
-- ===========================================
-- 车位数量明细查询
-- ===========================================
SELECT
B.organ_name AS organ_name
,B.comm_name AS comm_name
,COUNT(1) AS CNT
FROM
(
SELECT
CommID
FROM dw.dim_parking_info_d
-- WHERE UseState = '使用'
-- and PropertyUses not in('闲置','未售出','未售')
)A
LEFT JOIN
(
SELECT
distinct
organ_code
,organ_name
,comm_id
,comm_name
from dim_organ_mapping
where comm_id is not null
)B
ON A.CommID = B.comm_id
WHERE B.comm_name IS NOT NULL
GROUP BY
B.organ_name
,B.comm_name
;
-- ======================================
-- 能耗同环比分析 修改为单位面积能耗
-- ======================================
-- 单位面积能耗环比
select
A.organ_code AS organ_code
, A.organ_name AS organ_name
, A.comm_id AS comm_id
, A.comm_name AS comm_name
, A.MeterType AS MeterType
, A.list_ym AS list_ym
, A.Dosage AS Dosage
, A.Amount AS Amount
,IF(B.ContractArea = 0,0,A.Dosage / B.ContractArea) AS DOSAGE_PER_SQUARE_METER
from
(
SELECT
organ_code
, organ_name
, comm_id
, comm_name
, MeterType
, list_ym
, Dosage
, Amount
FROM dws_engine_meter_dosage_m
WHERE 1=1
AND MeterType IN ('水表','电表')
AND list_ym < date_format(CURRENT_DATE(),'%Y%m')
${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
AND LEFT (list_ym,4) = ${left(p_ym,4)}
${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")}
)A
LEFT JOIN
(
select
CommId -- 项目id
,SUM(ContractArea) AS ContractArea-- 合同面积(建筑面积)
from dim_project_base_info_d
GROUP BY
CommId
)B
ON A.comm_id = B.CommId
;
-- 单位面积能耗_同比
select
A.organ_code AS organ_code
, A.organ_name AS organ_name
, A.comm_id AS comm_id
, A.comm_name AS comm_name
, A.MeterType AS MeterType
, A.list_ym AS list_ym
, A.Dosage AS Dosage
, A.Amount AS Amount
,IF(B.ContractArea = 0,0,A.Dosage / B.ContractArea) AS DOSAGE_PER_SQUARE_METER
from
(
SELECT
organ_code
, organ_name
, comm_id
, comm_name
, MeterType
, list_ym
, Dosage
, Amount
FROM dws_engine_meter_dosage_m
WHERE 1=1
AND list_ym <> DATE_FORMAT(CURDATE(), '%Y%m')
AND list_ym >= '${FORMAT(MONTHDELTA(CONCATENATE(p_ym,"-01"),-60),"yyyyMM")}'
${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")}
${IF(LEN(p_ym)>0," AND right(list_ym,2) ='" +right(p_ym,2) + "'","")}
${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")}
and MeterType in ('水表','电表')
order by list_ym asc
)A
LEFT JOIN
(
select
CommId -- 项目id
,SUM(ContractArea) AS ContractArea-- 合同面积(建筑面积)
from dim_project_base_info_d
GROUP BY
CommId
)B
ON A.comm_id = B.CommId
;