From ddc7bf65809233f4994b975ac54fc76a55bdfa04 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Mon, 5 Aug 2024 17:38:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B7=A5=E7=A8=8B=E6=98=8E=E7=BB=86=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8+=E7=89=A9=E4=B8=9A=E6=98=8E=E7=BB=86=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 4 + finereport/kanban/pc/创新生态.sql | 141 ++++++++++++++++++ finereport/xiazuan/3_property/4_投诉明细.sql | 46 ++++++ .../xiazuan/4_engine/1_异常抬杆下钻明细.sql | 28 ++++ .../xiazuan/4_engine/2_水电能耗明细.sql | 82 ++++++++++ .../xiazuan/4_engine/3_设施设备完好率黑榜.sql | 81 ++++++++++ .../xiazuan/4_engine/4_巡查完成率黑榜.sql | 79 ++++++++++ 7 files changed, 461 insertions(+) create mode 100644 finereport/xiazuan/3_property/4_投诉明细.sql create mode 100644 finereport/xiazuan/4_engine/1_异常抬杆下钻明细.sql create mode 100644 finereport/xiazuan/4_engine/2_水电能耗明细.sql create mode 100644 finereport/xiazuan/4_engine/3_设施设备完好率黑榜.sql create mode 100644 finereport/xiazuan/4_engine/4_巡查完成率黑榜.sql diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index aa81cb8..f5426ad 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -11,10 +11,12 @@ + + @@ -28,6 +30,8 @@ + + \ No newline at end of file diff --git a/finereport/kanban/pc/创新生态.sql b/finereport/kanban/pc/创新生态.sql index 2c20f53..f803071 100644 --- a/finereport/kanban/pc/创新生态.sql +++ b/finereport/kanban/pc/创新生态.sql @@ -69,4 +69,145 @@ SELECT IFNULL(SUM(实收金额) / SUM(应收金额),0) AS 完成率 FROM T1 ; +-- ====================================== +-- 表格_2_新零售大于50_new +-- ====================================== +SELECT + T1.organ_comm_name AS organ_name + ,T1.FINISH_RATE AS 销售完成率 + ,T1.sale_target AS sale_target + ,T1.sale_amt AS sale_amt + ,ROW_NUMBER() OVER (ORDER BY T1.FINISH_RATE DESC) AS 序号 +FROM + ( + SELECT +-- B.organ_code +-- ,B.organ_name +-- ,B.comm_id +-- ,B.comm_name + ${IF(LEN(p_area)>0,"B.comm_name", "B.organ_name")} AS organ_comm_name +-- ,SUM(B.sale_target) AS sale_target + ,SUM(IFNULL(A.sale_amt,0)) + SUM(IFNULL(B.sale_fact,0)) AS sale_amt + ,SUM(IFNULL(B.sale_target,0)) AS sale_target + ,CASE WHEN SUM(IFNULL(B.sale_target,0)) = 0 THEN 0 + ELSE SUM(IFNULL(A.sale_amt,0)) + SUM(IFNULL(B.sale_fact,0)) / SUM(IFNULL + (B.sale_target,0)) + END AS FINISH_RATE -- 销售完成率 + FROM + ( + select + organ_code + ,organ_name + ,comm_id + ,comm_name + ,sum(case when create_ym = '202406' then 0 else sale_amt end) sale_amt -- 202406填报数据为线下+线下,所以不取线上数据 + from dw.dws_innoveco_new_retail_m + where create_ym = '${REPLACE(p_ym,"-","")}' + group by + organ_code + ,organ_name + ,comm_id + ,comm_name + )A + RIGHT JOIN + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,SUM(IFNULL(index_retail_target,0))*10000 AS sale_target + ,SUM(index_retail_fact)*10000 AS sale_fact + FROM dw.ods_innoveco_offlinesales + WHERE `year_month` = '${REPLACE(p_ym,"-","")}' + GROUP BY + organ_code + ,organ_name + ,comm_id + ,comm_name + )B + ON A.organ_code = B.organ_code + AND A.comm_id = B.comm_id + WHERE 1=1 + ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + GROUP BY + ${IF(LEN(p_area)>0,"B.comm_name", "B.organ_name")} + )T1 +ORDER BY T1.FINISH_RATE DESC +LIMIT 5 + + +-- ====================================== +-- 表格_2_新零售小于50_new +-- ====================================== + + +SELECT + T1.organ_comm_name AS organ_name + ,T1.FINISH_RATE AS 销售完成率 + ,T1.sale_target AS sale_target + ,T1.sale_amt AS sale_amt + ,ROW_NUMBER() OVER (ORDER BY T1.FINISH_RATE ASC) AS 序号 +FROM + ( + SELECT +-- B.organ_code +-- ,B.organ_name +-- ,B.comm_id +-- ,B.comm_name + ${IF(LEN(p_area)>0,"B.comm_name", "B.organ_name")} AS organ_comm_name +-- ,SUM(B.sale_target) AS sale_target + ,SUM(IFNULL(A.sale_amt,0)) + SUM(IFNULL(B.sale_fact,0)) AS sale_amt + ,SUM(IFNULL(B.sale_target,0)) AS sale_target + ,CASE WHEN SUM(IFNULL(B.sale_target,0)) = 0 THEN 0 + ELSE SUM(IFNULL(A.sale_amt,0)) + SUM(IFNULL(B.sale_fact,0)) / SUM(IFNULL + (B.sale_target,0)) + END AS FINISH_RATE -- 销售完成率 + FROM + ( + select + organ_code + ,organ_name + ,comm_id + ,comm_name + ,sum(case when create_ym = '202406' then 0 else sale_amt end) sale_amt -- 202406填报数据为线下+线下,所以不取线上数据 + from dw.dws_innoveco_new_retail_m + where create_ym = '${REPLACE(p_ym,"-","")}' + group by + organ_code + ,organ_name + ,comm_id + ,comm_name + )A + RIGHT JOIN + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,SUM(IFNULL(index_retail_target,0))*10000 AS sale_target + ,SUM(index_retail_fact)*10000 AS sale_fact + FROM dw.ods_innoveco_offlinesales + WHERE `year_month` = '${REPLACE(p_ym,"-","")}' + GROUP BY + organ_code + ,organ_name + ,comm_id + ,comm_name + )B + ON A.organ_code = B.organ_code + AND A.comm_id = B.comm_id + WHERE 1=1 + ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + GROUP BY + ${IF(LEN(p_area)>0,"B.comm_name", "B.organ_name")} + )T1 +ORDER BY T1.FINISH_RATE ASC +LIMIT 5 + + +-- ====================================== +-- +-- ====================================== \ No newline at end of file diff --git a/finereport/xiazuan/3_property/4_投诉明细.sql b/finereport/xiazuan/3_property/4_投诉明细.sql new file mode 100644 index 0000000..54c13ec --- /dev/null +++ b/finereport/xiazuan/3_property/4_投诉明细.sql @@ -0,0 +1,46 @@ +SELECT +${if(len(p_area) == 0,"A.organ_name","A.comm_name")} as p_area -- 片区/项目 +,SUM(A.tousu_incident_num) AS tousu_incident_num -- 投诉量 +,sum(B.ROOM_NUM) AS ROOM_NUM -- 户数 +,CASE WHEN sum(B.ROOM_NUM) = 0 THEN 0 + ELSE SUM(A.tousu_incident_num) / sum(B.ROOM_NUM) * 10000 + END AS AVG_INCIDENT_NUM -- 每万户均投诉量 +FROM +( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + -- ,incident_ym + ,SUM(IFNULL(tousu_incident_num,0)) AS tousu_incident_num -- 投诉量 + FROM dw.dws_estate_incident_info_m + where incident_ym = '${REPLACE(p_ym,"-","")}' + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + GROUP BY + organ_code + ,organ_name + ,comm_id + ,comm_name + having SUM(IFNULL(tousu_incident_num,0)) !=0 +)A +LEFT JOIN +( + SELECT + T1.organ_code AS ORGAN_CODE -- 片区ID + ,T1.comm_id AS COMM_ID -- 项目ID + ,count(T2.RoomName) AS ROOM_NUM -- 户数 + FROM dw.dim_organ_mapping T1 + INNER JOIN dim_room_d T2 + ON T1.comm_id = T2.CommID + WHERE 1 = 1 + ${IF(LEN(p_area)>0," and organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + GROUP BY + T1.organ_code + ,T1.comm_id +)B +ON A.comm_id = B.COMM_ID +AND A.organ_code = B.ORGAN_CODE +GROUP BY +${if(len(p_area) == 0,"A.organ_name","A.comm_name")} \ No newline at end of file diff --git a/finereport/xiazuan/4_engine/1_异常抬杆下钻明细.sql b/finereport/xiazuan/4_engine/1_异常抬杆下钻明细.sql new file mode 100644 index 0000000..bc36d01 --- /dev/null +++ b/finereport/xiazuan/4_engine/1_异常抬杆下钻明细.sql @@ -0,0 +1,28 @@ +select + ${if(len(p_area) == 0,"organ_name","comm_name")} as p_area -- 片区/项目 + ,STR_TO_DATE(time, '%Y%m%d') as time -- 日期 + ,SUM(manualOutNum) AS manualOutNum -- 出口手动抬杆数 + ,CASE WHEN SUM(carflow) = 0 THEN 0 + ELSE sum(manualNum) / SUM(carflow) + END AS exceptionRate +from dw.dwd_engine_stat_exception_rate_d +where 1=1 +${IF(LEN(p_area)!=0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +${IF(LEN(startdate)>0,"AND time >= '"+FORMAT(startdate,"yyyyMMdd")+"'","")} +${IF(LEN(enddate)>0,"AND time <= '"+FORMAT(enddate,"yyyyMMdd")+"'","")} +${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +GROUP BY +${if(len(p_area) == 0,"organ_name","comm_name")} +,STR_TO_DATE(time, '%Y%m%d') + +select + ${if(len(p_area)>0, "comm_name organ_name","organ_name 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) + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +group BY + ${if(len(p_area)>0, "comm_name","organ_name")} \ No newline at end of file diff --git a/finereport/xiazuan/4_engine/2_水电能耗明细.sql b/finereport/xiazuan/4_engine/2_水电能耗明细.sql new file mode 100644 index 0000000..2cd34d4 --- /dev/null +++ b/finereport/xiazuan/4_engine/2_水电能耗明细.sql @@ -0,0 +1,82 @@ + +SELECT DISTINCT + organ_code AS 片区id, + organ_name AS 片区名称 +FROM dw.dws_engine_meter_dosage_m +where 1=1 +${if(GETUSERDEPARTMENTS(2)="领悦集团总部","","and organ_name = '"+GETUSERDEPARTMENTS(2)+"'")} + + + + +-- 【能耗环比】 + +-- 折线图 +select + list_ym +, MeterType +,SUM(Dosage) /10000 Dosage -- 能耗 +,SUM(Amount) AS Amount-- 能耗金额 +from dw.dws_engine_meter_dosage_m +where 1=1 +and MeterType in ('水表','电表') +AND list_ym < date_format(current_date(),'%Y%m') +and left(list_ym,4) = ${left(p_ym,4)} +${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +-- ${IF(LEN(P_MeterType)>0," AND MeterType IN ('"+JOINARRAY(P_MeterType,"','")+"')", "")} +GROUP by +list_ym +, MeterType +ORDER BY +list_ym + +-- 明细表 + + + + + + +-- 【能耗同比】 +SELECT + MeterType +, list_ym +,SUM(Dosage) /10000 Dosage +,SUM(Amount) AS Amount +FROM dw.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 ('水表','电表') +group by +MeterType +,list_ym +order by +list_ym + + + + +-- 【明细】 + +select +${if(len(p_area) == 0,"organ_name","comm_name")} as p_area -- 片区/项目 +, MeterType +,SUM(Dosage) Dosage -- 能耗 +,SUM(Amount) AS Amount-- 能耗金额 +from dw.dws_engine_meter_dosage_m +where 1=1 +and MeterType in ('水表','电表') +and list_ym = ${replace(p_ym,'-','')} +${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +${IF(LEN(P_MeterType)>0," AND MeterType IN ('"+JOINARRAY(P_MeterType,"','")+"')", "")} +GROUP BY +${if(len(p_area) == 0,"organ_name","comm_name")} + , MeterType + + diff --git a/finereport/xiazuan/4_engine/3_设施设备完好率黑榜.sql b/finereport/xiazuan/4_engine/3_设施设备完好率黑榜.sql new file mode 100644 index 0000000..c8d40db --- /dev/null +++ b/finereport/xiazuan/4_engine/3_设施设备完好率黑榜.sql @@ -0,0 +1,81 @@ +-- 【report_设备完好率明细】 +SELECT +T.name as name +,T.good_rate as good_rate +FROM +( +SELECT +${if(len(p_area)>0, "comm_name name","organ_name name")} +-- ,SUM(good_equipment_num) AS good_equipment_num -- 完好设备数 +-- ,SUM(equipment_num) AS equipment_num-- 设备总数 +,CASE WHEN SUM(equipment_num) = 0 THEN 0 + ELSE SUM(good_equipment_num) / SUM(equipment_num) + END as good_rate +FROM dw.dws_engine_equipment_in_good_d +where 1=1 +${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +group by +${if(len(p_area)>0, "comm_name","organ_name")} +)T +-- ORDER BY T.good_rate desc + + + +-- 【report_设备完好率按片区top10】 + + +SELECT + T.organ_name as name + ,T.good_rate as good_rate + +FROM + ( + SELECT + -- comm_name + organ_name +-- ,SUM(good_equipment_num) AS good_equipment_num -- 完好设备数 +-- ,SUM(equipment_num) AS equipment_num-- 设备总数 + ,CASE WHEN SUM(equipment_num) = 0 THEN 0 + ELSE SUM(good_equipment_num) / SUM(equipment_num) + END as good_rate + FROM dw.dws_engine_equipment_in_good_d + where 1=1 + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + group by + organ_name + )T +ORDER BY T.good_rate desc +limit 10 + + + +-- 【report_设备完好率按项目top10】 + + + + +SELECT + T.comm_name as name + ,T.good_rate as good_rate + +FROM + ( + SELECT + comm_name + -- organ_name +-- ,SUM(good_equipment_num) AS good_equipment_num -- 完好设备数 +-- ,SUM(equipment_num) AS equipment_num-- 设备总数 + ,CASE WHEN SUM(equipment_num) = 0 THEN 0 + ELSE SUM(good_equipment_num) / SUM(equipment_num) + END as good_rate + FROM dw.dws_engine_equipment_in_good_d + where 1=1 + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + group by + comm_name + )T +ORDER BY T.good_rate desc +limit 10 diff --git a/finereport/xiazuan/4_engine/4_巡查完成率黑榜.sql b/finereport/xiazuan/4_engine/4_巡查完成率黑榜.sql new file mode 100644 index 0000000..010866f --- /dev/null +++ b/finereport/xiazuan/4_engine/4_巡查完成率黑榜.sql @@ -0,0 +1,79 @@ +-- 【1_report_巡查完成率明细】 + + +SELECT +T.name AS name +,T.task_finish_rate AS task_finish_rate +FROM +( +select +${IF(LEN(p_area)>0,"comm_name name","organ_name name")} +,task_ym +,CASE WHEN sum(task_num) = 0 THEN 0 + ELSE sum(task_finish_num) / sum(task_num) END AS task_finish_rate +FROM dw.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) + "'","")} +${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +group by +${IF(LEN(p_area)>0,"comm_name","organ_name")} +,task_ym +)T +-- order by task_finish_rate + + +-- 【2_report_巡查完成率黑榜_按片区】 + + + + +SELECT + T.name AS name + ,T.task_finish_rate AS task_finish_rate +FROM + ( + select + organ_name name + ,task_ym + ,CASE WHEN sum(task_num) = 0 THEN 0 + ELSE sum(task_finish_num) / sum(task_num) END AS task_finish_rate + FROM dw.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) + "'","")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + group by + organ_name + ,task_ym + )T +order by task_finish_rate +limit 10 + + +-- 【3_report_巡查完成率黑榜_按项目】 + + + + +SELECT + T.name AS name + ,T.task_finish_rate AS task_finish_rate +FROM + ( + select + comm_name name + ,task_ym + ,CASE WHEN sum(task_num) = 0 THEN 0 + ELSE sum(task_finish_num) / sum(task_num) END AS task_finish_rate + FROM dw.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) + "'","")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + group by + comm_name + ,task_ym + )T +order by task_finish_rate +limit 10 \ No newline at end of file