leading-project/finereport/kanban/pc/工程.sql
2024-11-27 11:07:58 +08:00

416 lines
13 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- dict_erp片区
SELECT DISTINCT
organ_code AS id,
organ_name AS
FROM dim_organ_mapping
;
-- 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+ "'","")}
-- 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
;
-- 能耗环比
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,"','")+"')", "")}
;
-- 能耗排名
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
;
-- 能耗同比
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
;
-- ----------------------------------------------------------------------------------------------------------
-- 设备巡查
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
-- ---------------------------------------------------------------------------------------------------------------
-- 水电收缴率
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
;