From cab3c61096d23f1bb3ccc1d02be909d4b8c9f4d5 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 23 Jul 2024 09:07:40 +0800 Subject: [PATCH 01/89] =?UTF-8?q?ods=E8=84=9A=E6=9C=AC=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dw/ods/ods_erp_divmanage_pointstatisticsreport_d.sql | 1 - dw/ods/ods_erp_tb_cp_dictionary_d.sql | 1 - dw/ods/ods_erp_tb_cp_flow_task_ambient_d.sql | 1 - dw/ods/ods_erp_tb_cp_flow_task_d.sql | 1 - dw/ods/ods_erp_tb_cp_flow_task_patrol_d.sql | 1 - dw/ods/ods_erp_tb_cp_flow_task_safe_d.sql | 1 - dw/ods/ods_erp_tb_cp_point_d.sql | 1 - dw/ods/ods_erp_tb_cp_syspoint_d.sql | 1 - dw/ods/ods_erp_tb_cp_tasklevel_d.sql | 1 - dw/ods/ods_erp_tb_divfmanage_category_d.sql | 1 - dw/ods/ods_erp_tb_divfmanage_contract_d.sql | 1 - dw/ods/ods_erp_tb_divfmanage_contractpoint_d.sql | 1 - dw/ods/ods_erp_tb_divfmanage_dictionary_d.sql | 1 - dw/ods/ods_erp_tb_divfmanage_point_d.sql | 1 - dw/ods/ods_erp_tb_divfmanage_region_d.sql | 1 - dw/ods/ods_erp_tb_eq_equipment_d.sql | 1 - dw/ods/ods_erp_tb_eq_equipmentstatus_d.sql | 1 - dw/ods/ods_erp_tb_eq_flow_task_inspection_d.sql | 1 - dw/ods/ods_erp_tb_eq_flow_task_maintenance_d.sql | 1 - dw/ods/ods_erp_tb_eq_rank_d.sql | 1 - dw/ods/ods_erp_tb_eq_space_d.sql | 1 - dw/ods/ods_erp_tb_hr_archives_d.sql | 1 - dw/ods/ods_erp_tb_hspr_building_d.sql | 1 - dw/ods/ods_erp_tb_hspr_carpark_d.sql | 1 - dw/ods/ods_erp_tb_hspr_community_d.sql | 1 - dw/ods/ods_erp_tb_hspr_corpcostitem_d.sql | 1 - dw/ods/ods_erp_tb_hspr_corpincidenttype_d.sql | 1 - dw/ods/ods_erp_tb_hspr_costitem_d.sql | 1 - dw/ods/ods_erp_tb_hspr_customermeter_d.sql | 1 - dw/ods/ods_erp_tb_hspr_customermeterresulthis_d.sql | 1 - dw/ods/ods_erp_tb_hspr_parking_d.sql | 1 - dw/ods/ods_erp_tb_hspr_projectbasicinfomation_d.sql | 1 - dw/ods/ods_erp_tb_hspr_projecttakeoverdetail_d.sql | 1 - dw/ods/ods_erp_tb_hspr_projecttakeoverinformation_d.sql | 1 - dw/ods/ods_erp_tb_hspr_room_d.sql | 1 - dw/ods/ods_erp_tb_hspr_roomstate_d.sql | 1 - dw/ods/ods_erp_tb_sys_department_d.sql | 1 - dw/ods/ods_erp_tb_sys_organ_d.sql | 1 - dw/ods/ods_erp_tb_sys_role_d.sql | 1 - dw/ods/ods_erp_tb_sys_roledata_d.sql | 1 - dw/ods/ods_erp_tb_sys_user_d.sql | 1 - dw/ods/ods_erp_tb_sys_userrole_d.sql | 1 - dw/ods/ods_erp_view_hspr_incidentnewjh_search_filter_d.sql | 1 - dw/ods/ods_oa_hrmdepartment_d.sql | 1 - dw/ods/ods_oa_hrmresource_d.sql | 1 - dw/ods/ods_oa_hrmsubcompany_d.sql | 1 - dw/ods/ods_oa_uf_hfwy_jhtzbd_d.sql | 1 - dw/ods/ods_oa_uf_hfwyjhbzb_d.sql | 1 - dw/ods/ods_oa_uf_jhzpjl_d.sql | 1 - dw/ods/ods_oa_uf_wy_aj_d.sql | 1 - dw/ods/ods_oa_uf_wy_hk_d.sql | 1 - dw/ods/ods_oa_uf_wy_jhmkh_d.sql | 1 - dw/ods/ods_oa_uf_wy_lsxx_d.sql | 1 - dw/ods/ods_oa_uf_wy_pq_d.sql | 1 - dw/ods/ods_oa_uf_wy_qf_d.sql | 1 - dw/ods/ods_oa_uf_wy_xm_d.sql | 1 - dw/ods/ods_oa_uf_wy_yj_d.sql | 1 - 57 files changed, 57 deletions(-) diff --git a/dw/ods/ods_erp_divmanage_pointstatisticsreport_d.sql b/dw/ods/ods_erp_divmanage_pointstatisticsreport_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_divmanage_pointstatisticsreport_d.sql +++ b/dw/ods/ods_erp_divmanage_pointstatisticsreport_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_cp_dictionary_d.sql b/dw/ods/ods_erp_tb_cp_dictionary_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_cp_dictionary_d.sql +++ b/dw/ods/ods_erp_tb_cp_dictionary_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_cp_flow_task_ambient_d.sql b/dw/ods/ods_erp_tb_cp_flow_task_ambient_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_cp_flow_task_ambient_d.sql +++ b/dw/ods/ods_erp_tb_cp_flow_task_ambient_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_cp_flow_task_d.sql b/dw/ods/ods_erp_tb_cp_flow_task_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_cp_flow_task_d.sql +++ b/dw/ods/ods_erp_tb_cp_flow_task_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_cp_flow_task_patrol_d.sql b/dw/ods/ods_erp_tb_cp_flow_task_patrol_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_cp_flow_task_patrol_d.sql +++ b/dw/ods/ods_erp_tb_cp_flow_task_patrol_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_cp_flow_task_safe_d.sql b/dw/ods/ods_erp_tb_cp_flow_task_safe_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_cp_flow_task_safe_d.sql +++ b/dw/ods/ods_erp_tb_cp_flow_task_safe_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_cp_point_d.sql b/dw/ods/ods_erp_tb_cp_point_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_cp_point_d.sql +++ b/dw/ods/ods_erp_tb_cp_point_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_cp_syspoint_d.sql b/dw/ods/ods_erp_tb_cp_syspoint_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_cp_syspoint_d.sql +++ b/dw/ods/ods_erp_tb_cp_syspoint_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_cp_tasklevel_d.sql b/dw/ods/ods_erp_tb_cp_tasklevel_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_cp_tasklevel_d.sql +++ b/dw/ods/ods_erp_tb_cp_tasklevel_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_divfmanage_category_d.sql b/dw/ods/ods_erp_tb_divfmanage_category_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_divfmanage_category_d.sql +++ b/dw/ods/ods_erp_tb_divfmanage_category_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_divfmanage_contract_d.sql b/dw/ods/ods_erp_tb_divfmanage_contract_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_divfmanage_contract_d.sql +++ b/dw/ods/ods_erp_tb_divfmanage_contract_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_divfmanage_contractpoint_d.sql b/dw/ods/ods_erp_tb_divfmanage_contractpoint_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_divfmanage_contractpoint_d.sql +++ b/dw/ods/ods_erp_tb_divfmanage_contractpoint_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_divfmanage_dictionary_d.sql b/dw/ods/ods_erp_tb_divfmanage_dictionary_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_divfmanage_dictionary_d.sql +++ b/dw/ods/ods_erp_tb_divfmanage_dictionary_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_divfmanage_point_d.sql b/dw/ods/ods_erp_tb_divfmanage_point_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_divfmanage_point_d.sql +++ b/dw/ods/ods_erp_tb_divfmanage_point_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_divfmanage_region_d.sql b/dw/ods/ods_erp_tb_divfmanage_region_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_divfmanage_region_d.sql +++ b/dw/ods/ods_erp_tb_divfmanage_region_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_eq_equipment_d.sql b/dw/ods/ods_erp_tb_eq_equipment_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_eq_equipment_d.sql +++ b/dw/ods/ods_erp_tb_eq_equipment_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_eq_equipmentstatus_d.sql b/dw/ods/ods_erp_tb_eq_equipmentstatus_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_eq_equipmentstatus_d.sql +++ b/dw/ods/ods_erp_tb_eq_equipmentstatus_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_eq_flow_task_inspection_d.sql b/dw/ods/ods_erp_tb_eq_flow_task_inspection_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_eq_flow_task_inspection_d.sql +++ b/dw/ods/ods_erp_tb_eq_flow_task_inspection_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_eq_flow_task_maintenance_d.sql b/dw/ods/ods_erp_tb_eq_flow_task_maintenance_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_eq_flow_task_maintenance_d.sql +++ b/dw/ods/ods_erp_tb_eq_flow_task_maintenance_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_eq_rank_d.sql b/dw/ods/ods_erp_tb_eq_rank_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_eq_rank_d.sql +++ b/dw/ods/ods_erp_tb_eq_rank_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_eq_space_d.sql b/dw/ods/ods_erp_tb_eq_space_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_eq_space_d.sql +++ b/dw/ods/ods_erp_tb_eq_space_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hr_archives_d.sql b/dw/ods/ods_erp_tb_hr_archives_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hr_archives_d.sql +++ b/dw/ods/ods_erp_tb_hr_archives_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_building_d.sql b/dw/ods/ods_erp_tb_hspr_building_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_building_d.sql +++ b/dw/ods/ods_erp_tb_hspr_building_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_carpark_d.sql b/dw/ods/ods_erp_tb_hspr_carpark_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_carpark_d.sql +++ b/dw/ods/ods_erp_tb_hspr_carpark_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_community_d.sql b/dw/ods/ods_erp_tb_hspr_community_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_community_d.sql +++ b/dw/ods/ods_erp_tb_hspr_community_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_corpcostitem_d.sql b/dw/ods/ods_erp_tb_hspr_corpcostitem_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_corpcostitem_d.sql +++ b/dw/ods/ods_erp_tb_hspr_corpcostitem_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_corpincidenttype_d.sql b/dw/ods/ods_erp_tb_hspr_corpincidenttype_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_corpincidenttype_d.sql +++ b/dw/ods/ods_erp_tb_hspr_corpincidenttype_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_costitem_d.sql b/dw/ods/ods_erp_tb_hspr_costitem_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_costitem_d.sql +++ b/dw/ods/ods_erp_tb_hspr_costitem_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_customermeter_d.sql b/dw/ods/ods_erp_tb_hspr_customermeter_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_customermeter_d.sql +++ b/dw/ods/ods_erp_tb_hspr_customermeter_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_customermeterresulthis_d.sql b/dw/ods/ods_erp_tb_hspr_customermeterresulthis_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_customermeterresulthis_d.sql +++ b/dw/ods/ods_erp_tb_hspr_customermeterresulthis_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_parking_d.sql b/dw/ods/ods_erp_tb_hspr_parking_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_parking_d.sql +++ b/dw/ods/ods_erp_tb_hspr_parking_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_projectbasicinfomation_d.sql b/dw/ods/ods_erp_tb_hspr_projectbasicinfomation_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_projectbasicinfomation_d.sql +++ b/dw/ods/ods_erp_tb_hspr_projectbasicinfomation_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_projecttakeoverdetail_d.sql b/dw/ods/ods_erp_tb_hspr_projecttakeoverdetail_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_projecttakeoverdetail_d.sql +++ b/dw/ods/ods_erp_tb_hspr_projecttakeoverdetail_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_projecttakeoverinformation_d.sql b/dw/ods/ods_erp_tb_hspr_projecttakeoverinformation_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_projecttakeoverinformation_d.sql +++ b/dw/ods/ods_erp_tb_hspr_projecttakeoverinformation_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_room_d.sql b/dw/ods/ods_erp_tb_hspr_room_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_room_d.sql +++ b/dw/ods/ods_erp_tb_hspr_room_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_roomstate_d.sql b/dw/ods/ods_erp_tb_hspr_roomstate_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_roomstate_d.sql +++ b/dw/ods/ods_erp_tb_hspr_roomstate_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_sys_department_d.sql b/dw/ods/ods_erp_tb_sys_department_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_sys_department_d.sql +++ b/dw/ods/ods_erp_tb_sys_department_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_sys_organ_d.sql b/dw/ods/ods_erp_tb_sys_organ_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_sys_organ_d.sql +++ b/dw/ods/ods_erp_tb_sys_organ_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_sys_role_d.sql b/dw/ods/ods_erp_tb_sys_role_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_sys_role_d.sql +++ b/dw/ods/ods_erp_tb_sys_role_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_sys_roledata_d.sql b/dw/ods/ods_erp_tb_sys_roledata_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_sys_roledata_d.sql +++ b/dw/ods/ods_erp_tb_sys_roledata_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_sys_user_d.sql b/dw/ods/ods_erp_tb_sys_user_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_sys_user_d.sql +++ b/dw/ods/ods_erp_tb_sys_user_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_sys_userrole_d.sql b/dw/ods/ods_erp_tb_sys_userrole_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_sys_userrole_d.sql +++ b/dw/ods/ods_erp_tb_sys_userrole_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_view_hspr_incidentnewjh_search_filter_d.sql b/dw/ods/ods_erp_view_hspr_incidentnewjh_search_filter_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_view_hspr_incidentnewjh_search_filter_d.sql +++ b/dw/ods/ods_erp_view_hspr_incidentnewjh_search_filter_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_hrmdepartment_d.sql b/dw/ods/ods_oa_hrmdepartment_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_hrmdepartment_d.sql +++ b/dw/ods/ods_oa_hrmdepartment_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_hrmresource_d.sql b/dw/ods/ods_oa_hrmresource_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_hrmresource_d.sql +++ b/dw/ods/ods_oa_hrmresource_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_hrmsubcompany_d.sql b/dw/ods/ods_oa_hrmsubcompany_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_hrmsubcompany_d.sql +++ b/dw/ods/ods_oa_hrmsubcompany_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_uf_hfwy_jhtzbd_d.sql b/dw/ods/ods_oa_uf_hfwy_jhtzbd_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_uf_hfwy_jhtzbd_d.sql +++ b/dw/ods/ods_oa_uf_hfwy_jhtzbd_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_uf_hfwyjhbzb_d.sql b/dw/ods/ods_oa_uf_hfwyjhbzb_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_uf_hfwyjhbzb_d.sql +++ b/dw/ods/ods_oa_uf_hfwyjhbzb_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_uf_jhzpjl_d.sql b/dw/ods/ods_oa_uf_jhzpjl_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_uf_jhzpjl_d.sql +++ b/dw/ods/ods_oa_uf_jhzpjl_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_uf_wy_aj_d.sql b/dw/ods/ods_oa_uf_wy_aj_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_uf_wy_aj_d.sql +++ b/dw/ods/ods_oa_uf_wy_aj_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_uf_wy_hk_d.sql b/dw/ods/ods_oa_uf_wy_hk_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_uf_wy_hk_d.sql +++ b/dw/ods/ods_oa_uf_wy_hk_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_uf_wy_jhmkh_d.sql b/dw/ods/ods_oa_uf_wy_jhmkh_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_uf_wy_jhmkh_d.sql +++ b/dw/ods/ods_oa_uf_wy_jhmkh_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_uf_wy_lsxx_d.sql b/dw/ods/ods_oa_uf_wy_lsxx_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_uf_wy_lsxx_d.sql +++ b/dw/ods/ods_oa_uf_wy_lsxx_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_uf_wy_pq_d.sql b/dw/ods/ods_oa_uf_wy_pq_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_uf_wy_pq_d.sql +++ b/dw/ods/ods_oa_uf_wy_pq_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_uf_wy_qf_d.sql b/dw/ods/ods_oa_uf_wy_qf_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_uf_wy_qf_d.sql +++ b/dw/ods/ods_oa_uf_wy_qf_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_uf_wy_xm_d.sql b/dw/ods/ods_oa_uf_wy_xm_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_uf_wy_xm_d.sql +++ b/dw/ods/ods_oa_uf_wy_xm_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_uf_wy_yj_d.sql b/dw/ods/ods_oa_uf_wy_yj_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_uf_wy_yj_d.sql +++ b/dw/ods/ods_oa_uf_wy_yj_d.sql @@ -1 +0,0 @@ -ECHO is off. From e11302904f82de425bcf2860684789154231d214 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 23 Jul 2024 12:00:17 +0800 Subject: [PATCH 02/89] =?UTF-8?q?=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E4=BC=98=E5=8C=96+=E9=83=A8=E5=88=86=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E8=A1=A8=E4=BF=AE=E6=94=B9=E4=B8=BA=E5=A4=9A=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 5 +- dw/dwd/dwd_cost_detail_data_d.sql | 2 - dwd_cost_detail_data_d.sql | 194 ------------------ .../2_operation}/住服比异常项目.sql | 12 +- .../2_operation}/计划到期明细.sql | 77 +++---- .../2_operation}/车位空置率明细.sql | 0 .../2_operation}/项目明细弹窗.sql | 49 ++--- 7 files changed, 77 insertions(+), 262 deletions(-) delete mode 100644 dwd_cost_detail_data_d.sql rename finereport/{detail => xiazuan/2_operation}/住服比异常项目.sql (76%) rename finereport/{detail => xiazuan/2_operation}/计划到期明细.sql (61%) rename finereport/{detail => xiazuan/2_operation}/车位空置率明细.sql (100%) rename finereport/{detail => xiazuan/2_operation}/项目明细弹窗.sql (63%) diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 297a7b5..8b050c8 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -6,8 +6,9 @@ - - + + + \ No newline at end of file diff --git a/dw/dwd/dwd_cost_detail_data_d.sql b/dw/dwd/dwd_cost_detail_data_d.sql index bf0e83e..069bd28 100644 --- a/dw/dwd/dwd_cost_detail_data_d.sql +++ b/dw/dwd/dwd_cost_detail_data_d.sql @@ -1,4 +1,3 @@ - -- ----------------------------------- -- 费控明细表建表 -- ----------------------------------- @@ -27,7 +26,6 @@ CREATE TABLE IF NOT EXISTS dw.dwd_cost_detail_data_d ( ,implementation_rate VARCHAR(50) COMMENT '执行率' )COMMENT = '费控明细表'; - -- **************************************** -- 创建人员: 杨坤安 -- 创建日期: 2024-07-19 diff --git a/dwd_cost_detail_data_d.sql b/dwd_cost_detail_data_d.sql deleted file mode 100644 index 0fd163e..0000000 --- a/dwd_cost_detail_data_d.sql +++ /dev/null @@ -1,194 +0,0 @@ - -------------------------------------- --- 费控明细表建表 -------------------------------------- -DROP TABLE IF EXISTS dw.dwd_cost_detail_data_d; -CREATE TABLE IF NOT EXISTS dw.dwd_cost_detail_data_d ( - yearname VARCHAR(50) COMMENT '年' -,monthname VARCHAR(50) COMMENT '月' -,organ_code VARCHAR(255) COMMENT '片区ID' -,organ_name VARCHAR(255) COMMENT '片区名称' -,cost_code VARCHAR(50) COMMENT '成本类型编码: LC:行政成本 AC:人力成本' -,cost_name VARCHAR(50) COMMENT '成本类型名称' -,dimsubjectcode VARCHAR(255) COMMENT '组织机构编码' -,dimsubjectname VARCHAR(255) COMMENT '组织机构名称' -,totalcode VARCHAR(255) COMMENT '组织机构层级编码' -,dimaccountcode VARCHAR(255) COMMENT '预算科目编码' -,dimaccountname VARCHAR(255) COMMENT '预算科目名称' -,buget VARCHAR(255) COMMENT '预算金额' -,occ VARCHAR(255) COMMENT '已占用金额' -,realfee VARCHAR(255) COMMENT '已使用金额' -,available VARCHAR(255) COMMENT '剩余可用金额' -,budgetfee_rate VARCHAR(50) COMMENT '预算执行率' -,originalcurrency VARCHAR(255) COMMENT '调整金额' -,target_fee VARCHAR(255) COMMENT '目标值' -,actual_fee VARCHAR(255) COMMENT '实际值' -,diff_amount VARCHAR(255) COMMENT '差额' -,implementation_rate VARCHAR(50) COMMENT '执行率' -)COMMENT = '费控明细表' - - ------------------------------------------------------------------------------------------------- --- 【指标计算】 - --- 预算金额 - 调整金额 = 预算初期金额 - --- 查询预算sql的预算金额(年月需要和调整金额sql中的年月一致)-调整金额sql的调整金额=预算初期金额 - --- 目标值 = 预算金额 - 调整金额 --- 实际值 = 已使用金额 --- 差额 = 目标值 - 实际值 --- 执行率 = 实际值 / 目标值 - ------------------------------------------------------------------------------------------------- - - -truncate dw.dwd_cost_detail_data_d; -INSERT into dw.dwd_cost_detail_data_d -SELECT - T1.yearname AS yearname -- 年 - ,T1.monthname AS monthname -- 月 - ,T2.organ_code AS organ_code -- 片区ID - ,T2.organ_name AS organ_name -- 片区名称 - ,T1.cost_code AS cost_code -- 成本类型编码: LC:行政成本 AC:人力成本 - ,T1.cost_name AS cost_name -- 成本类型名称 - ,T1.dimsubjectcode AS dimsubjectcode -- 组织机构编码 - ,T1.dimsubjectname AS dimsubjectname -- 组织机构名称 - ,T1.totalcode AS totalcode -- 组织机构层级编码 - ,T1.dimaccountcode AS dimaccountcode -- 预算科目编码 - ,T1.dimaccountname AS dimaccountname -- 预算科目名称 - ,T1.buget AS buget -- 预算金额 - ,T1.occ AS occ -- 已占用金额 - ,T1.realfee AS realfee -- 已使用金额 - ,T1.available AS available -- 剩余可用金额 - ,T1.budgetfee_rate AS budgetfee_rate -- 预算执行率 - ,T1.originalcurrency AS originalcurrency -- 调整金额 - ,T1.target_fee AS target_fee -- 目标值 - ,T1.actual_fee AS actual_fee -- 实际值 - ,ROUND((T1.target_fee - T1.actual_fee),2) AS diff_amount -- 差额 - ,case when T1.target_fee = 0 then '0%' else concat(ROUND((T1.actual_fee / T1.target_fee)*100,2),'%') end AS implementation_rate -- 执行率 -FROM -( - SELECT - A.yearname AS yearname -- 年 - ,A.monthname AS monthname -- 月 - ,'LC' AS cost_code -- 成本类型编码: LC:行政成本 AC:人力成本 - ,'行政成本' AS cost_name -- 成本类型名称 - ,A.dimsubjectcode AS dimsubjectcode -- 组织机构编码 - ,A.dimsubjectname AS dimsubjectname -- 组织机构名称 - ,A.totalcode AS totalcode -- 组织机构层级编码 - ,A.dimaccountcode AS dimaccountcode -- 预算科目编码 - ,A.dimaccountname AS dimaccountname -- 预算科目名称 - ,A.buget AS buget -- 预算金额 - ,A.occ AS occ -- 已占用金额 - ,A.realfee AS realfee -- 已使用金额 - ,A.available AS available -- 剩余可用金额 - ,A.budgetfee_rate AS budgetfee_rate -- 预算执行率 - ,COALESCE(B.originalcurrency,0) AS originalcurrency -- 调整金额 - ,ROUND((A.buget - COALESCE(B.originalcurrency,0)),2) AS target_fee -- 目标值 - ,A.realfee AS actual_fee -- 实际值 - -- ,'' AS diff_amount -- 差额 - -- ,'' AS implementation_rate -- 执行率 - FROM - ( - SELECT - dimaccountcode -- 预算科目编码 - ,dimaccountname -- 预算科目名称 - ,dimsubjectcode -- 组织机构编码 - ,dimsubjectname -- 组织机构名称 - ,yearname -- 年 - ,totalcode -- 组织机构层级编码 - ,monthname -- 月 - ,buget -- 预算金额 - ,occ -- 已占用金额 - ,realfee -- 已使用金额 - ,available -- 剩余可用金额 - ,budgetfee_rate -- 预算执行率 - FROM dw.dwd_cost_budget_data_d -- 预算金额明细表 - WHERE dimaccountcode IN('WY0402','WY040201','WY040202','WY040203','WY040204','WY040205','WY040206','WY040207','WY040208','WY040209','WY040210','WY040211','WY040212','WY040213','WY040214','WY040215','WY040216') - )A - LEFT JOIN - ( - SELECT - year -- 年 - ,month -- 月 - ,dimsubjectcode -- 调整组织机构编码 - ,dimaccountcode -- 调整预算科目编码 - ,originalcurrency -- 调整金额 - FROM dw.dwd_cost_adjust_data_d -- 调整金额明细表 - WHERE dimaccountcode IN('WY0402','WY040201','WY040202','WY040203','WY040204','WY040205','WY040206','WY040207','WY040208','WY040209','WY040210','WY040211','WY040212','WY040213','WY040214','WY040215','WY040216') - )B - ON A.dimaccountcode = B.dimaccountcode - AND A.dimsubjectcode = B.dimsubjectcode - AND A.yearname = B.year - AND A.monthname = B.month - UNION ALL - SELECT - A.yearname AS yearname -- 年 - ,A.monthname AS monthname -- 月 - ,'AC' AS cost_code -- 成本类型编码: LC:行政成本 AC:人力成本 - ,'人力成本' AS cost_name -- 成本类型名称 - ,A.dimsubjectcode AS dimsubjectcode -- 组织机构编码 - ,A.dimsubjectname AS dimsubjectname -- 组织机构名称 - ,A.totalcode AS totalcode -- 组织机构层级编码 - ,A.dimaccountcode AS dimaccountcode -- 预算科目编码 - ,A.dimaccountname AS dimaccountname -- 预算科目名称 - ,A.buget AS buget -- 预算金额 - ,A.occ AS occ -- 已占用金额 - ,A.realfee AS realfee -- 已使用金额 - ,A.available AS available -- 剩余可用金额 - ,A.budgetfee_rate AS budgetfee_rate -- 预算执行率 - ,COALESCE(B.originalcurrency,0) AS originalcurrency -- 调整金额 - ,ROUND((A.buget - COALESCE(B.originalcurrency,0)),2) AS target_fee -- 目标值 - ,A.realfee AS actual_fee -- 实际值 - -- ,'' AS diff_amount -- 差额 - -- ,'' AS implementation_rate -- 执行率 - FROM - ( - SELECT - dimaccountcode -- 预算科目编码 - ,dimaccountname -- 预算科目名称 - ,dimsubjectcode -- 组织机构编码 - ,dimsubjectname -- 组织机构名称 - ,yearname -- 年 - ,totalcode -- 组织机构层级编码 - ,monthname -- 月 - ,buget -- 预算金额 - ,occ -- 已占用金额 - ,realfee -- 已使用金额 - ,available -- 剩余可用金额 - ,budgetfee_rate -- 预算执行率 - FROM dw.dwd_cost_budget_data_d -- 预算金额明细表 - WHERE dimaccountcode IN('WY0401','WY040101','WY040102','WY040103','WY040104','WY040105','WY040106','WY040107','WY040108','WY040109','WY040110','WY040111','WY040112','WY040113','WY040114') - )A - LEFT JOIN - ( - SELECT - year -- 年 - ,month -- 月 - ,dimsubjectcode -- 调整组织机构编码 - ,dimaccountcode -- 调整预算科目编码 - ,originalcurrency -- 调整金额 - FROM dw.dwd_cost_adjust_data_d -- 调整金额明细表 - WHERE dimaccountcode IN('WY0401','WY040101','WY040102','WY040103','WY040104','WY040105','WY040106','WY040107','WY040108','WY040109','WY040110','WY040111','WY040112','WY040113','WY040114') - )B - ON A.dimaccountcode = B.dimaccountcode - AND A.dimsubjectcode = B.dimsubjectcode - AND A.yearname = B.year - AND A.monthname = B.month -)T1 -LEFT JOIN -( - SELECT - organ_code -- erp片区id - ,organ_name -- erp片区名称 - ,cost_comm_id -- 费控项目id - FROM dw.dim_organ_mapping -- 片区项目映射维度表 - where cost_comm_id is not null - GROUP BY - organ_code -- erp片区id - ,organ_name -- erp片区名称 - ,cost_comm_id -- 费控项目id -)T2 -ON T1.dimsubjectcode = T2.cost_comm_id -; \ No newline at end of file diff --git a/finereport/detail/住服比异常项目.sql b/finereport/xiazuan/2_operation/住服比异常项目.sql similarity index 76% rename from finereport/detail/住服比异常项目.sql rename to finereport/xiazuan/2_operation/住服比异常项目.sql index 69d605f..0d5f765 100644 --- a/finereport/detail/住服比异常项目.sql +++ b/finereport/xiazuan/2_operation/住服比异常项目.sql @@ -20,6 +20,14 @@ select end as occupancy_rate -- 入住率 from dws_operation_room_park_info_d where 1=1 -${if(len(p_area) == 0,"","and organ_code = '" + p_area+ "'")} + ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} group by -${if(len(p_area) == 0,"organ_name","comm_name")} -- 片区/项目 \ No newline at end of file +${if(len(p_area) == 0,"organ_name","comm_name")} + + +-- 【筛选框数据集: dic_erp片区】 + +SELECT DISTINCT + organ_code AS 片区id, + organ_name AS 片区名称 +FROM dim_organ_mapping \ No newline at end of file diff --git a/finereport/detail/计划到期明细.sql b/finereport/xiazuan/2_operation/计划到期明细.sql similarity index 61% rename from finereport/detail/计划到期明细.sql rename to finereport/xiazuan/2_operation/计划到期明细.sql index 68c23c3..1ed0e56 100644 --- a/finereport/detail/计划到期明细.sql +++ b/finereport/xiazuan/2_operation/计划到期明细.sql @@ -7,25 +7,27 @@ -- 【数据集: report_计划到期】 select - ${if(len(p_area) == 0,"coalesce(d.oa_organ_name,c.subcompanyname)","c.subcompanyname")} as p_area - ,d.oa_comm_id as oa_comm_id -- 项目id - ,d.oa_comm_name as oa_comm_name -- 项目名称 - ,d.oa_organ_code as oa_organ_code -- 片区id - ,d.oa_organ_name as oa_organ_name -- 片区名称 - ,b.subcompanyid1 as subcompanyid1 -- 公司id - ,c.subcompanyname as subcompanyname -- 公司名称 - ,c.supsubcomid as supsubcomid -- 父公司id - ,a.plan_name as plan_name -- 计划名称 - ,a.eval_criteria as plan_desc -- 计划内容 - ,a.plan_level as plan_level -- 计划等级 - ,left(a.start_date,7) as ym -- 计划开始年月 - ,a.start_dt as start_dt -- 计划开始时 - ,a.end_date as end_date -- 计划结束时间 + ${if(len(p_area) == 0,"c.organ_name","c.comm_name")} as p_area + ,c.oa_comm_id as oa_comm_id -- oa项目id + ,c.oa_comm_name as oa_comm_name -- oa项目名称 + ,c.oa_organ_code as oa_organ_code -- oa片区id + ,c.oa_organ_name as oa_organ_name -- oa片区名称 + ,c.organ_code as organ_code -- erp片区编码 + ,c.organ_name as organ_name -- erp片区名称 + ,c.comm_id as comm_id -- erp项目id + ,c.comm_name as comm_name -- erp项目名称 + ,b.subcompanyid1 as subcompanyid1 -- 公司id + ,a.plan_name as plan_name -- 计划名称 + ,a.eval_criteria as plan_desc -- 计划内容 + ,a.plan_level as plan_level -- 计划等级 + ,left(a.start_date,7) as ym -- 计划开始年月 + ,a.start_dt as start_dt -- 计划开始时 + ,a.end_date as end_date -- 计划结束时间 ,a.finish_date as finish_date -- 计划完成时间 ,a.input_date as input_date -- 计划录入时间 - ,a.day_diff as day_diff -- 距离计划结束天数 - ,a.executor as executor -- 执行人编码 - ,b.lastname as executor_name -- 执行人 + ,a.day_diff as day_diff -- 距离计划结束天数 + ,a.responsible_person1 as responsible_person1 -- 责任人编码 + ,b.lastname as executor_name -- 责任人名称 ,left(a.end_ym,7) as end_ym -- 计划结束年月 from ( @@ -33,7 +35,7 @@ from concat(left(trim(start_date),5),lpad(substring_index(substring_index(trim(start_date),'-',2),'-',-1),2,0),right(trim(start_date),3)) as start_date ,a.start_date as start_dt -- 计划开始时间 ,a.plan_level -- 计划等级 - ,jt.executor -- 执行人 责任人 口径可能不一致 + ,jt.responsible_person1 -- 责任人 ,a.plan_status -- 计划状态 ,a.input_date -- 录入时间 ,a.end_date -- 计划结束时间 @@ -44,11 +46,13 @@ from ,a.eval_criteria -- 评价标准 FROM dw.dwd_operations_plan_info_d a, JSON_TABLE ( - cast( CONCAT( '["', REPLACE ( executor, ',', '","' ), '"]' ) AS json ), - "$[*]" COLUMNS ( executor INT PATH "$" ) + cast( CONCAT( '["', REPLACE ( responsible_person1, ',', '","' ), '"]' ) AS json ), + "$[*]" COLUMNS ( responsible_person1 INT PATH "$" ) ) AS jt - WHERE TO_DAYS(a.end_date) - TO_DAYS(curdate()) <= 3 - AND TO_DAYS(a.end_date) - TO_DAYS(curdate()) >= 1 + -- WHERE TO_DAYS(a.end_date) - TO_DAYS(curdate()) <= 3 + -- AND TO_DAYS(a.end_date) - TO_DAYS(curdate()) >= 1 + where a.end_date > date_format(CURDATE() - INTERVAL 3 day,'%Y-%m-%d') + and a.end_date <= date_format(CURDATE(),'%Y-%m-%d') )a left join ( @@ -59,23 +63,26 @@ from from dw.ods_oa_hrmresource_d )b - on a.executor = b.id - inner join + on a.responsible_person1 = b.id + left join ( select - id - ,subcompanyname -- 公司名称 - ,supsubcomid -- 父公司id - from dw.ods_oa_hrmsubcompany_d - where 1 = 1 - ${if(len(p_area) == 0,"","and supsubcomid = '" + p_area + "'")} + distinct + organ_code -- erp片区id + ,organ_name -- erp片区名称 + ,comm_id -- erp项目id + ,comm_name -- erp项目名称 + ,oa_organ_code -- oa片区id + ,oa_organ_name -- oa片区名称 + ,oa_comm_id -- oa项目id + ,oa_comm_name -- oa项目名称 + from dim_organ_mapping -- 组织结构映射维度表 + where comm_id is not null )c - on b.subcompanyid1 = c.id - left join (select distinct oa_comm_id, oa_comm_name, oa_organ_code, oa_organ_name from dim_organ_mapping) d - on b.subcompanyid1 = d.oa_comm_id -where 1 = 1 + on b.subcompanyid1 = c.oa_comm_id + where 1 = 1 ${if(len(p_startdate) == 0,"","and left(a.end_ym,7) = '" + p_startdate + "'")} - + ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} diff --git a/finereport/detail/车位空置率明细.sql b/finereport/xiazuan/2_operation/车位空置率明细.sql similarity index 100% rename from finereport/detail/车位空置率明细.sql rename to finereport/xiazuan/2_operation/车位空置率明细.sql diff --git a/finereport/detail/项目明细弹窗.sql b/finereport/xiazuan/2_operation/项目明细弹窗.sql similarity index 63% rename from finereport/detail/项目明细弹窗.sql rename to finereport/xiazuan/2_operation/项目明细弹窗.sql index 8ef92d9..4c0d7fe 100644 --- a/finereport/detail/项目明细弹窗.sql +++ b/finereport/xiazuan/2_operation/项目明细弹窗.sql @@ -6,36 +6,31 @@ -- **************************************** -- 【数据集: report_project】 +-- 1. 财务 finance +-- 2. 运营 operation +-- 3. 物业 property +-- 4. 工程 engine +-- 5. 人力 5_manpower +-- 6. 创新 6_innovation +-- 7. 商业 7_business +-- 8. 法务 8_legal --- SELECT --- --- -- ${if(len(p_area) == 0,"t.organ_name","t.comm_name")} as p_area -- 片区/项目 --- t.organ_name as organ_name -- erp片区名称 --- ,t.comm_name as comm_name -- erp项目名称 --- ,${if(len(p_area) == 0,"'-'","t.ManageKindName")} as ManageKindName -- 管理性质名称 【项目归属】 --- ,${if(len(p_area) == 0,"'-'","t.StateName")} as StateName -- 业态 【项目业态】 --- ,sum(t.ContractArea) as ContractArea -- 合同面积 【建筑面积】 --- ,sum(t.TakeOverArea) as TakeOverArea -- 接管面积 【合约面积】 --- ,sum(t.ManageContractArea) as ManageContractArea -- 管理口径合同面积 【在管面积】 --- ,sum(t.room_num) as room_num -- 总户数 --- FROM --- ( SELECT - -- ${if(len(p_area) == 0,"B.organ_name","B.comm_name")} as p_area - -- ,A.CommId AS CommId -- 项目id 可关联maping表 - -- ${if(len(p_area) == 0,",'-'",",A.ManageKindName")} as newManageKind - -- ,A.ManageKind AS ManageKind -- 管理性质 【项目归属】 - A.ManageKindName AS ManageKindName -- 管理性质名称 【项目归属】 + -- ${if(len(p_area) == 0,"B.organ_name","B.comm_name")} as p_area + -- ,A.CommId AS CommId -- 项目id 可关联maping表 + -- ${if(len(p_area) == 0,",'-'",",A.ManageKindName")} as newManageKind + -- ,A.ManageKind AS ManageKind -- 管理性质 【项目归属】 + A.ManageKindName AS ManageKindName -- 管理性质名称 【项目归属】 ,A.ContractArea / 10000 AS ContractArea -- 合同面积 【建筑面积】 ,A.TakeOverArea / 10000 AS TakeOverArea -- 接管面积 【合约面积】 ,A.ManageContractArea / 10000 AS ManageContractArea -- 管理口径合同面积 【在管面积】 - -- ${if(len(p_area) == 0,",'-'",",A.StateName")} as newStateName + -- ${if(len(p_area) == 0,",'-'",",A.StateName")} as newStateName ,A.StateName AS StateName -- 业态 【项目业态】 ,C.room_num AS room_num -- 总户数 - -- ,A.Province AS Province -- 省 - -- ,A.City AS City -- 市 - -- ,A.County AS County -- 区 - -- ,B.organ_code AS organ_code -- erp片区id + -- ,A.Province AS Province -- 省 + -- ,A.City AS City -- 市 + -- ,A.County AS County -- 区 + ,B.organ_code AS organ_code -- erp片区id ,B.organ_name AS organ_name -- erp片区名称 -- ,B.comm_id AS -- erp项目id ,B.comm_name AS comm_name -- erp项目名称 @@ -62,6 +57,7 @@ FROM ,comm_id -- erp项目id ,comm_name -- erp项目名称 FROM dw.dim_organ_mapping -- 片区项目映射维度表 + where comm_id is not null and comm_name not like '%撤场%' and comm_name not like '%案场%' and comm_name not like '%禁用%' and length(comm_id) != 0 GROUP BY organ_code -- erp片区id ,organ_name -- erp片区名称 @@ -69,7 +65,7 @@ FROM ,comm_name -- erp项目名称 )B ON A.CommId = B.comm_id - JOIN + LEFT JOIN ( SELECT CommID @@ -79,8 +75,8 @@ FROM CommID )C ON A.CommId = C.CommID -where 1 = 1 - ${if(len(p_area) == 0,"","and organ_code = '" + p_area + "'")} + where 1 = 1 + ${IF(LEN(p_area)!=0," where t.organ_code IN ('"+JOINARRAY(p_area,"','")+"')","")} -- )t @@ -106,4 +102,3 @@ SELECT DISTINCT FROM dim_organ_mapping ; - From 9226e54f79868419d189d6f024540b1c217f7f7a Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 23 Jul 2024 14:07:25 +0800 Subject: [PATCH 03/89] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AF=B4=E6=98=8E?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 281 +++++++++++++++++++++++++++++ doc/映射表规范.md => 映射表规范.md | 0 2 files changed, 281 insertions(+) create mode 100644 README.md rename doc/映射表规范.md => 映射表规范.md (100%) diff --git a/README.md b/README.md new file mode 100644 index 0000000..1cb7b64 --- /dev/null +++ b/README.md @@ -0,0 +1,281 @@ +# 领悦看板项目代码库 + +--- +## 一、代码范围说明 + +1.**数仓``dw``** + +- dim层表加工逻辑: dw/dim +- dwd层表加工逻辑: dw/dwd +- dws层表加工逻辑: dw/dws + +2.**帆软报表后台逻辑``finereport``** + +- 明细表加工逻辑 +- 大屏关键指标加工逻辑 +- 填报表目标库表及校验规则 + + +## 二、SQL开发规范分享 + +### 1. 建表脚本(DDL) + +**【建表语句】** + +命名规则示例: **create_dwd_cost_budget_data_d.sql** + +```sql +-- ***************************************** +-- 开发人员: 杨坤安 +-- 创建日期: 2024-07-18 +-- 功 能: 费控预算金额明细表 +-- ***************************************** +DROP TABLE IF EXISTS dw.dwd_cost_budget_data_d; +CREATE TABLE IF NOT EXISTS dw.dwd_cost_budget_data_d ( + dimaccountcode VARCHAR(255) COMMENT '预算科目编码' +,dimaccountname VARCHAR(255) COMMENT '预算科目名称' +,dimsubjectcode VARCHAR(255) COMMENT '组织机构编码' +,dimsubjectname VARCHAR(255) COMMENT '组织机构名称' +,yearname VARCHAR(50) COMMENT '年' +,totalcode VARCHAR(255) COMMENT '组织机构层级编码' +,monthname VARCHAR(50) COMMENT '月' +,buget VARCHAR(255) COMMENT '预算金额' +,occ VARCHAR(255) COMMENT '已占用金额' +,realfee VARCHAR(255) COMMENT '已使用金额' +,available VARCHAR(255) COMMENT '剩余可用金额' +,budgetfee_rate VARCHAR(50) COMMENT '预算执行率' +)COMMENT = '费控预算金额明细表' +``` + +**【修改表字段】** + +命名规则示例: **alter_dwd_cost_budget_data_d.sql** + +```sql +-- ***************************************** +-- 开发人员: 杨坤安 +-- 修改日期: 2024-07-18 +-- 修改内容: 字段修改 monthname -> month_name +-- ... -> ... +-- ***************************************** + +ALTER TABLE dw.dwd_cost_budget_data_d MODIFY COLUMN monthname month_name; +``` + +**【字段命名规范】** + +- 字段中文名翻译过来的单词来命名 + +- 如果翻译的单词太长,可以适当截取单词,尽量直观一点 + +- 不要使用拼音、关键字命名字段 + +**【表命名规范】** + +数仓层\_业务域\_主要业务数据_跑数天(D|M|Q|Y|) + +如: dwd_cost_budget_data_d + + + +### 2. 数据转换、加载(DML) + +**【关键字大写】** + +使用select、from、where等关键字时使用大写 + +**【层级关联表别名】** + +多个表关联,最外层用T1、T2、T3等顺序命名 + +里面关联子表使用A、B、C、D顺序命名 + +子表中关联使用A1、A2、B1、B2顺序命名 + +**【注释】** + +脚本头注释: 写明谁开发的、开发日期、改段sql主要的功能是什么 + +字段注释: 每个字段必写字段的中文名称,方便理解 + +复杂功能注释: 如果有较复杂的加工逻辑,简要注释写一下该段的加工说明 + +**【其他】** + +字段分割符`,`放到第一列,批量修改比较容易 + +注释间隔、缩进怎么整齐怎么来 + +**【示例】** + +```sql +truncate dw.dwd_cost_detail_data_d; +INSERT into dw.dwd_cost_detail_data_d +SELECT + T1.yearname AS yearname -- 年 + ,T1.monthname AS monthname -- 月 + ,T2.organ_code AS organ_code -- 片区ID + ,T2.organ_name AS organ_name -- 片区名称 + ,T1.cost_code AS cost_code -- 成本类型编码: LC:行政成本 AC:人力成本 + ,T1.cost_name AS cost_name -- 成本类型名称 + ,T1.dimsubjectcode AS dimsubjectcode -- 组织机构编码 + ,T1.dimsubjectname AS dimsubjectname -- 组织机构名称 + ,T1.totalcode AS totalcode -- 组织机构层级编码 + ,T1.dimaccountcode AS dimaccountcode -- 预算科目编码 + ,T1.dimaccountname AS dimaccountname -- 预算科目名称 + ,T1.buget AS buget -- 预算金额 + ,T1.occ AS occ -- 已占用金额 + ,T1.realfee AS realfee -- 已使用金额 + ,T1.available AS available -- 剩余可用金额 + ,T1.budgetfee_rate AS budgetfee_rate -- 预算执行率 + ,T1.originalcurrency AS originalcurrency -- 调整金额 + ,T1.target_fee AS target_fee -- 目标值 + ,T1.actual_fee AS actual_fee -- 实际值 + ,ROUND((T1.target_fee - T1.actual_fee),2) AS diff_amount -- 差额 + ,case when T1.target_fee = 0 then '0%' else concat(ROUND((T1.actual_fee / T1.target_fee)*100,2),'%') end AS implementation_rate -- 执行率 +FROM +( + SELECT + A.yearname AS yearname -- 年 + ,A.monthname AS monthname -- 月 + ,'LC' AS cost_code -- 成本类型编码: LC:行政成本 AC:人力成本 + ,'行政成本' AS cost_name -- 成本类型名称 + ,A.dimsubjectcode AS dimsubjectcode -- 组织机构编码 + ,A.dimsubjectname AS dimsubjectname -- 组织机构名称 + ,A.totalcode AS totalcode -- 组织机构层级编码 + ,A.dimaccountcode AS dimaccountcode -- 预算科目编码 + ,A.dimaccountname AS dimaccountname -- 预算科目名称 + ,A.buget AS buget -- 预算金额 + ,A.occ AS occ -- 已占用金额 + ,A.realfee AS realfee -- 已使用金额 + ,A.available AS available -- 剩余可用金额 + ,A.budgetfee_rate AS budgetfee_rate -- 预算执行率 + ,COALESCE(B.originalcurrency,0) AS originalcurrency -- 调整金额 + ,ROUND((A.buget - COALESCE(B.originalcurrency,0)),2) AS target_fee -- 目标值 + ,A.realfee AS actual_fee -- 实际值 + -- ,'' AS diff_amount -- 差额 + -- ,'' AS implementation_rate -- 执行率 + FROM + ( + SELECT + dimaccountcode -- 预算科目编码 + ,dimaccountname -- 预算科目名称 + ,dimsubjectcode -- 组织机构编码 + ,dimsubjectname -- 组织机构名称 + ,yearname -- 年 + ,totalcode -- 组织机构层级编码 + ,monthname -- 月 + ,buget -- 预算金额 + ,occ -- 已占用金额 + ,realfee -- 已使用金额 + ,available -- 剩余可用金额 + ,budgetfee_rate -- 预算执行率 + FROM dw.dwd_cost_budget_data_d -- 预算金额明细表 + WHERE dimaccountcode IN('WY0402','WY040201','WY040202','WY040203','WY040204','WY040205','WY040206','WY040207','WY040208','WY040209','WY040210','WY040211','WY040212','WY040213','WY040214','WY040215','WY040216') + )A + LEFT JOIN + ( + SELECT + year -- 年 + ,month -- 月 + ,dimsubjectcode -- 调整组织机构编码 + ,dimaccountcode -- 调整预算科目编码 + ,originalcurrency -- 调整金额 + FROM dw.dwd_cost_adjust_data_d -- 调整金额明细表 + WHERE dimaccountcode IN('WY0402','WY040201','WY040202','WY040203','WY040204','WY040205','WY040206','WY040207','WY040208','WY040209','WY040210','WY040211','WY040212','WY040213','WY040214','WY040215','WY040216') + )B + ON A.dimaccountcode = B.dimaccountcode + AND A.dimsubjectcode = B.dimsubjectcode + AND A.yearname = B.year + AND A.monthname = B.month + UNION ALL + SELECT + A.yearname AS yearname -- 年 + ,A.monthname AS monthname -- 月 + ,'AC' AS cost_code -- 成本类型编码: LC:行政成本 AC:人力成本 + ,'人力成本' AS cost_name -- 成本类型名称 + ,A.dimsubjectcode AS dimsubjectcode -- 组织机构编码 + ,A.dimsubjectname AS dimsubjectname -- 组织机构名称 + ,A.totalcode AS totalcode -- 组织机构层级编码 + ,A.dimaccountcode AS dimaccountcode -- 预算科目编码 + ,A.dimaccountname AS dimaccountname -- 预算科目名称 + ,A.buget AS buget -- 预算金额 + ,A.occ AS occ -- 已占用金额 + ,A.realfee AS realfee -- 已使用金额 + ,A.available AS available -- 剩余可用金额 + ,A.budgetfee_rate AS budgetfee_rate -- 预算执行率 + ,COALESCE(B.originalcurrency,0) AS originalcurrency -- 调整金额 + ,ROUND((A.buget - COALESCE(B.originalcurrency,0)),2) AS target_fee -- 目标值 + ,A.realfee AS actual_fee -- 实际值 + -- ,'' AS diff_amount -- 差额 + -- ,'' AS implementation_rate -- 执行率 + FROM + ( + SELECT + dimaccountcode -- 预算科目编码 + ,dimaccountname -- 预算科目名称 + ,dimsubjectcode -- 组织机构编码 + ,dimsubjectname -- 组织机构名称 + ,yearname -- 年 + ,totalcode -- 组织机构层级编码 + ,monthname -- 月 + ,buget -- 预算金额 + ,occ -- 已占用金额 + ,realfee -- 已使用金额 + ,available -- 剩余可用金额 + ,budgetfee_rate -- 预算执行率 + FROM dw.dwd_cost_budget_data_d -- 预算金额明细表 + WHERE dimaccountcode IN('WY0401','WY040101','WY040102','WY040103','WY040104','WY040105','WY040106','WY040107','WY040108','WY040109','WY040110','WY040111','WY040112','WY040113','WY040114') + )A + LEFT JOIN + ( + SELECT + year -- 年 + ,month -- 月 + ,dimsubjectcode -- 调整组织机构编码 + ,dimaccountcode -- 调整预算科目编码 + ,originalcurrency -- 调整金额 + FROM dw.dwd_cost_adjust_data_d -- 调整金额明细表 + WHERE dimaccountcode IN('WY0401','WY040101','WY040102','WY040103','WY040104','WY040105','WY040106','WY040107','WY040108','WY040109','WY040110','WY040111','WY040112','WY040113','WY040114') + )B + ON A.dimaccountcode = B.dimaccountcode + AND A.dimsubjectcode = B.dimsubjectcode + AND A.yearname = B.year + AND A.monthname = B.month +)T1 +LEFT JOIN +( + SELECT + organ_code -- erp片区id + ,organ_name -- erp片区名称 + ,cost_comm_id -- 费控项目id + FROM dw.dim_organ_mapping -- 片区项目映射维度表 + where cost_comm_id is not null + GROUP BY + organ_code -- erp片区id + ,organ_name -- erp片区名称 + ,cost_comm_id -- 费控项目id +)T2 +ON T1.dimsubjectcode = T2.cost_comm_id +; +``` + + + +### 3. 优化SQL查询 + +- 避免使用``select * from xxx``,需要哪些字段,select哪些字段即可; + +- 需要where过滤的的,在关联前进行过滤,避免关联后再进行过滤; + +- 较为复杂的转换加工进行落表; + + + + + + + +--- + + diff --git a/doc/映射表规范.md b/映射表规范.md similarity index 100% rename from doc/映射表规范.md rename to 映射表规范.md From 319166b0ad3dccdf0040492c3b59ec89faa6790b Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 23 Jul 2024 21:40:49 +0800 Subject: [PATCH 04/89] =?UTF-8?q?finereport=E9=80=BB=E8=BE=91=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 6 + dw/dws/dws_engine_equipment_in_good_d.sql | 5 +- .../dws_engine_equipment_inspect_task_m.sql | 7 +- finereport/kanban/mobile/创新生态_mobile.sql | 191 ++++++++++++++++++ finereport/kanban/mobile/商业_mobile.sql | 61 ++++++ finereport/kanban/pc/工程.sql | 121 +++++++++++ finereport/kanban/pc/总裁.sql | 17 ++ finereport/xiazuan/1_finance/1_收缴下钻.sql | 103 ++++++++++ .../xiazuan/1_finance/2_今日收费情况.sql | 17 ++ .../xiazuan/1_finance/3_现金流贡献图.sql | 20 ++ .../xiazuan/1_finance/4_收入预算完成情况.sql | 39 ++++ .../xiazuan/2_operation/合同到期明细.sql | 1 + .../3_property/1_客户满意度得分明细.sql | 78 +++++++ 13 files changed, 662 insertions(+), 4 deletions(-) create mode 100644 finereport/kanban/mobile/创新生态_mobile.sql create mode 100644 finereport/kanban/mobile/商业_mobile.sql create mode 100644 finereport/kanban/pc/工程.sql create mode 100644 finereport/kanban/pc/总裁.sql create mode 100644 finereport/xiazuan/1_finance/1_收缴下钻.sql create mode 100644 finereport/xiazuan/1_finance/2_今日收费情况.sql create mode 100644 finereport/xiazuan/1_finance/3_现金流贡献图.sql create mode 100644 finereport/xiazuan/1_finance/4_收入预算完成情况.sql create mode 100644 finereport/xiazuan/2_operation/合同到期明细.sql create mode 100644 finereport/xiazuan/3_property/1_客户满意度得分明细.sql diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 8b050c8..c3f8137 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -3,9 +3,15 @@ + + + + + + diff --git a/dw/dws/dws_engine_equipment_in_good_d.sql b/dw/dws/dws_engine_equipment_in_good_d.sql index 0e00d9a..c6c7050 100644 --- a/dw/dws/dws_engine_equipment_in_good_d.sql +++ b/dw/dws/dws_engine_equipment_in_good_d.sql @@ -18,4 +18,7 @@ from dim_engine_equipment_d a inner join (select distinct organ_code, organ_name, comm_id, comm_name from dim_organ_mapping) c on a.CommID = c.comm_id group by - c.organ_code, c.organ_name, c.comm_id, c.comm_name \ No newline at end of file + c.organ_code, c.organ_name, c.comm_id, c.comm_name + +; +SELECT * FROM dim_engine_equipment_d where SystemId = '8ae5eea4-f0e0-4106-a022-ad2b370cad80' \ No newline at end of file diff --git a/dw/dws/dws_engine_equipment_inspect_task_m.sql b/dw/dws/dws_engine_equipment_inspect_task_m.sql index be8ed32..16dcc4f 100644 --- a/dw/dws/dws_engine_equipment_inspect_task_m.sql +++ b/dw/dws/dws_engine_equipment_inspect_task_m.sql @@ -1,10 +1,11 @@ select organ_code, organ_name, comm_id, comm_name , date_format(TaskEndTime, '%Y%m') task_ym - , sum(case when TaskStatue = 2 then 1 else 0 end) task_finish_num - , count(*) task_num + , sum(case when TaskStatue = 2 then 1 else 0 end) task_finish_num -- 完成数量 + , count(*) task_num -- 任务数量 + ,sum(case when TaskStatue = 2 then 1 else 0 end) / count(*) * 100 as rate from dwd_engine_equipment_inspection_task_d a - left join (select distinct organ_code, organ_name, comm_id, comm_name from dim_organ_mapping) b + join (select distinct organ_code, organ_name, comm_id, comm_name from dim_organ_mapping) b on a.CommId = b.comm_id group by organ_code, organ_name, comm_id, comm_name diff --git a/finereport/kanban/mobile/创新生态_mobile.sql b/finereport/kanban/mobile/创新生态_mobile.sql new file mode 100644 index 0000000..27c1191 --- /dev/null +++ b/finereport/kanban/mobile/创新生态_mobile.sql @@ -0,0 +1,191 @@ +-- dic_1_片区 + + +SELECT DISTINCT + organ_code AS 片区id, + organ_name AS 片区名称 +FROM dim_organ_mapping +; + + + +-- report_1_空间运营 + + WITH T1 AS +(SELECT + organ_code, + organ_name, + assessment_occupany_rate AS 出租率 +FROM dws_point_occupancy_rate_summary_pq +WHERE 1=1 + AND ym = '${REPLACE(p_ym,"-","")}' + ${IF(p_kj = "低于50%","AND assessment_occupany_rate <= 50","AND assessment_occupany_rate >= 50")} + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_prgject)>0," AND comm_id IN ('"+JOINARRAY(p_prgject,"','")+"')", "")} + ) +SELECT + ROW_NUMBER() OVER (ORDER BY 出租率) AS 序号, + organ_code, + organ_name, + 出租率 +FROM T1 +ORDER BY 出租率 ${IF(p_kj = "低于50%","ASC","DESC")} +; + +-- report_2_新零售 +WITH T1 AS ( + select + organ_code, + organ_name, + sum(sale_amt)/10000 sale_amt + from dws_innoveco_new_retail_m + where create_ym = '${REPLACE(p_ym,"-","")}' + group by organ_code,organ_name + ),T2 AS ( + SELECT + organ_code,organ_name, + SUM(IFNULL(index_retail_target,0)) AS sale_target, + SUM(index_retail_fact) AS sale_fact + FROM ods_innoveco_offlinesales + WHERE `year_month` = '${REPLACE(p_ym,"-","")}' + GROUP BY organ_code,organ_name + ),T3 AS ( + SELECT + T1.organ_code, + T1.organ_name, + T2.sale_target, + (T1.sale_amt + T2.sale_fact) AS sale_amt, + IFNULL((T1.sale_amt + T2.sale_fact) / T2.sale_target,0) AS 销售完成率 + FROM T1 LEFT JOIN T2 ON T1.organ_code = T2.organ_code + ) +SELECT + ROW_NUMBER() OVER (ORDER BY 销售完成率) AS 序号, + organ_code, + organ_name, + sale_target, + sale_amt, + 销售完成率 +FROM T3 +WHERE 1=1 + ${IF(p_xls = "低于50%","AND 销售完成率 <= 0.5","AND 销售完成率 >= 0.5")} +ORDER BY 销售完成率 ${IF(p_xls = "低于50%","ASC","DESC")} +; + +-- report_3_小悦到家 + +WITH T1 AS ( + select + organ_code, + organ_name, + sum(xydj_amt) sale_amt + from dws_innoveco_new_retail_m + where create_ym = '${REPLACE(p_ym,"-","")}' + group by organ_code,organ_name + ),T2 AS ( + SELECT + organ_code,organ_name, + SUM(IFNULL(index_xiaoyuedj_target,0)) AS sale_target, + SUM(index_yuhetai_fact) AS sale_fact + FROM ods_innoveco_offlinesales + WHERE `year_month` = '${REPLACE(p_ym,"-","")}' + GROUP BY organ_code,organ_name + ),T3 AS ( + SELECT + T1.organ_code, + T1.organ_name, + T2.sale_target, + (T1.sale_amt + T2.sale_fact) AS sale_amt, + IFNULL((T1.sale_amt + T2.sale_fact) / T2.sale_target,0) AS 销售完成率 + FROM T1 LEFT JOIN T2 ON T1.organ_code = T2.organ_code + ) +SELECT + ROW_NUMBER() OVER (ORDER BY 销售完成率) AS 序号, + organ_code, + organ_name, + sale_target, + sale_amt, + 销售完成率 +FROM T3 +WHERE 1=1 + ${IF(p_xydj = "低于50%","AND 销售完成率 <= 0.5","AND 销售完成率 >= 0.5")} +ORDER BY 销售完成率 ${IF(p_xydj = "低于50%","ASC","DESC")} +; + + +-- report_4_御和泰 + +WITH T1 AS ( + select + organ_code, + organ_name, + sum(yht_amt)/10000 sale_amt + from dws_innoveco_new_retail_m + where create_ym = '${REPLACE(p_ym,"-","")}' + group by organ_code,organ_name + ),T2 AS ( + SELECT + organ_code,organ_name, + SUM(IFNULL(index_yuhetai_target,0)) AS sale_target, + SUM(index_xiaoyuedj_fact) AS sale_fact + FROM ods_innoveco_offlinesales + WHERE `year_month` = '${REPLACE(p_ym,"-","")}' + GROUP BY organ_code,organ_name + ),T3 AS ( + SELECT + T1.organ_code, + T1.organ_name, + T2.sale_target, + (T1.sale_amt + T2.sale_fact) AS sale_amt, + IFNULL((T1.sale_amt + T2.sale_fact) / T2.sale_target,0) AS 销售完成率 + FROM T1 LEFT JOIN T2 ON T1.organ_code = T2.organ_code + ) +SELECT + ROW_NUMBER() OVER (ORDER BY 销售完成率) AS 序号, + organ_code, + organ_name, + sale_target, + sale_amt, + 销售完成率 +FROM T3 +WHERE 1=1 + ${IF(p_yht = "低于50%","AND 销售完成率 <= 0.5","AND 销售完成率 >= 0.5")} +ORDER BY 销售完成率 ${IF(p_yht = "低于50%","ASC","DESC")} +; + + +-- report_指标卡 + + +WITH T1 AS (/*各类别应收与实收*/ + SELECT + index_type, + SUM(IFNULL(index_receivable,0)) AS 应收金额, + SUM(IFNULL(index_receipts,0)) AS 实收金额 + FROM ods_caiwu_profit + WHERE 1=1 + AND `year_month` = '${REPLACE(p_ym,"-","")}' + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_prgject)>0," AND comm_id IN ('"+JOINARRAY(p_prgject,"','")+"')", "")} + GROUP BY index_type + ) +SELECT + IFNULL(SUM(CASE WHEN index_type = '附属资源/空间运营' THEN 实收金额 ELSE 0 END),0) AS 空间运营实收, + IFNULL(SUM(CASE WHEN index_type = '附属资源/空间运营' THEN 实收金额 / 应收金额 ELSE 0 END),0) AS 空间运营完成率, + IFNULL(SUM(CASE WHEN index_type = '美居' THEN 实收金额 ELSE 0 END),0) AS 美居实收, + IFNULL(SUM(CASE WHEN index_type = '美居' THEN 实收金额 / 应收金额 ELSE 0 END),0) AS 美居完成率, + IFNULL(SUM(CASE WHEN index_type = '社商/新零售' THEN 实收金额 ELSE 0 END),0) AS 新零售实收, + IFNULL(SUM(CASE WHEN index_type = '社商/新零售' THEN 实收金额 / 应收金额 ELSE 0 END),0) AS 新零售完成率, + IFNULL(SUM(CASE WHEN index_type = '资产运营/资产租售' THEN 实收金额 ELSE 0 END),0) AS 资产出租实收, + IFNULL(SUM(CASE WHEN index_type = '资产运营/资产租售' THEN 实收金额 / 应收金额 ELSE 0 END),0) AS 资产出租完成率, + IFNULL(SUM(实收金额),0) AS 全部实收, + IFNULL(SUM(实收金额) / SUM(应收金额),0) AS 完成率 +FROM T1 +; + + +-- 全国综合考核率 + +SELECT + CONCAT(assessment_occupany_rate,'%') AS 完成率 +FROM dws_point_occupancy_rate_summary_all +WHERE ym = '${REPLACE(p_ym,"-","")}' \ No newline at end of file diff --git a/finereport/kanban/mobile/商业_mobile.sql b/finereport/kanban/mobile/商业_mobile.sql new file mode 100644 index 0000000..ef7a12c --- /dev/null +++ b/finereport/kanban/mobile/商业_mobile.sql @@ -0,0 +1,61 @@ +-- dict_1_片区 + +SELECT DISTINCT + organ_code AS 片区id, + organ_name AS 片区名称 +FROM dim_organ_mapping +; + + + +-- report_出租分析组合图 + +SELECT + `type`, + SUM(IFNULL(construction_area,0))/10000 AS 资产面积, + SUM(IFNULL(lease_area,0))/10000 AS 出租面积, + SUM(IFNULL(lease_area,0))/SUM(IFNULL(construction_area,0)) AS 出租率 +FROM dws_business_rent_rate_d + ${IF(LEN(p_project) > 0," AND project_id IN ('"+JOINARRAY(p_project,"','")+"')", "")} +GROUP BY `type` +; + + +-- 出租率 + +SELECT + `type` + , sum(lease_area)/sum(construction_area) rent_rate +FROM dws_business_rent_rate_d +WHERE 1=1 + ${IF(LEN(p_project) > 0," AND project_id IN ('"+JOINARRAY(p_project,"','")+"')", "")} +group by `type` +; + + +-- 出租面积 + +SELECT + project_id + , project_name + , `type` + , construction_area/10000 construction_area + , lease_area/10000 lease_area + , lease_area/construction_area rent_rate +FROM dws_business_rent_rate_d + ${IF(LEN(p_project) > 0," AND project_id IN ('"+JOINARRAY(p_project,"','")+"')", "")} +; + + +-- 收款金额 + +SELECT + project_id + , project_name + , accrual_month + , current_sure_money/10000 current_sure_money + , received_money/10000 received_money + , areare_money/10000 areare_money +FROM dws_business_bill_m +where left(accrual_month,7) = '${p_ym}' + ${IF(LEN(p_project) > 0," AND project_id IN ('"+JOINARRAY(p_project,"','")+"')", "")} \ No newline at end of file diff --git a/finereport/kanban/pc/工程.sql b/finereport/kanban/pc/工程.sql new file mode 100644 index 0000000..3ac5c07 --- /dev/null +++ b/finereport/kanban/pc/工程.sql @@ -0,0 +1,121 @@ +-- 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 ${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(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 \ No newline at end of file diff --git a/finereport/kanban/pc/总裁.sql b/finereport/kanban/pc/总裁.sql new file mode 100644 index 0000000..fc641c3 --- /dev/null +++ b/finereport/kanban/pc/总裁.sql @@ -0,0 +1,17 @@ +select +concat(right(ym,2) + 0 , '月') ym +, sum(plan_num) plan_num +, sum(plan_complete_num) plan_complete_num +, sum(plan_incomplete_num) plan_incomplete_num +, sum(plan_complete_num) / sum(plan_num) plan_complete_rate +, sum(plan_adjust_num) plan_adjust_num +, sum(plan_adjust_num) / sum(plan_num) plan_adjust_rate +from dws_operation_plan_summary_m a +left join (select distinct organ_code, organ_name, comm_id, comm_name +, oa_organ_code, oa_organ_name, oa_comm_id, oa_comm_name from dim_organ_mapping where comm_id is not null) b +on a.subcompanyid = b.oa_comm_id +where 1=1 +${if(len(organ)=0,"","and organ_code = '"+organ+"'")} +and left(ym,4) = '2024' +group by ym +order by ym asc \ No newline at end of file diff --git a/finereport/xiazuan/1_finance/1_收缴下钻.sql b/finereport/xiazuan/1_finance/1_收缴下钻.sql new file mode 100644 index 0000000..0262f4d --- /dev/null +++ b/finereport/xiazuan/1_finance/1_收缴下钻.sql @@ -0,0 +1,103 @@ +-- dic_门店 + + +SELECT DISTINCT + comm_id AS 项目id,/*门店*/ + comm_name AS 项目名称 +FROM dim_organ_mapping +WHERE 1=1 + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + + +-- dic_片区 + + +SELECT DISTINCT + organ_code AS 片区id, + organ_name AS 片区名称 +FROM dim_organ_mapping + + +-- dict_费用类型 + +select distinct ParentCostCode, ParentCostName +from dws_finance_fees_serial_m +order by ParentCostCode asc + + +-- report_收缴率 + + +select + ${if(len(p_area) == 0,"a.organ_code code, a.organ_name name,","a.comm_id code, a.comm_name name,")} + a.ym, ParentCostCode, ParentCostName + , (pr_paid_cu_amt + cu_paid_cu_amt + pr_exempt_cu_amt + cu_exempt_cu_amt)/10000 cu_paid_amt + , (cu_receivable_amt + pr_exempt_cu_amt + cu_exempt_cu_amt)/10000 cu_receivable_amt + , (- cu_paid_pr_amt + cu_offset_pr_amt)/10000 pr_paid_amt + , (pr_total_receivable_amt + pr_total_received_amt + cu_early_exempt_pr_amt + cu_exempt_pr_amt)/10000 pr_receivable_amt + , case when a.ParentCostCode = '0001' then b.index_dq_target else 0 end cu_coll_rate_target + , case when a.ParentCostCode = '0001' then b.index_wq_target else 0 end pr_coll_rate_target + , case when a.ParentCostCode = '0008' then b.index_sd_target + when a.ParentCostCode = '0007' then b.index_dj_target else 0 end total_coll_rate_target +from dws_finance_fees_serial_m a + left join ods_finance_collection_target_area b + on a.organ_code = b.organ_code and a.ym = b.ym + left join ods_finance_collection_target_project c + on a.comm_id = c.comm_id and a.ym = c.ym +where 1=1 + ${if(len(p_startdate) == 0,"","and a.ym = '" + p_startdate + "'")} + ${if(len(p_feestype) == 0,"","and a.ParentCostCode = '" + p_feestype+ "'")} + ${if(len(p_area) == 0,"","and a.organ_code = '" + p_area+ "'")} +; + + +-- report_收缴率目标 + + +select + organ_code code + , organ_name name + , ym + , index_dq_target + , index_wq_target + , index_sd_target + , index_dj_target + , index_ac_target_dq + , index_ac_target_wq + , index_ac_target_zh +from ods_finance_collection_target_area +where 1=1 + ${if(len(p_startdate) == 0,"","and ym = '" + p_startdate + "'")} +union all +select + comm_id code + , comm_name name + , ym + , index_dq_target + , index_wq_target + , index_sd_target + , index_dj_target + , index_ac_target_dq + , index_ac_target_wq + , index_ac_target_zh +from ods_finance_collection_target_project +where 1=1 + ${if(len(p_startdate) == 0,"","and ym = '" + p_startdate + "'")} + + +-- report_中科目收缴率 + +select + b.organ_code, b.organ_name, b.comm_id, b.comm_name, ym + ${if(len(p_feestype) == 0,", ParentCostCode CostCode, ParentCostName CostName",", MiddleCostCode CostCode, MiddleCostName CostName")} + , (pr_paid_cu_amt + cu_paid_cu_amt + pr_exempt_cu_amt + cu_exempt_cu_amt)/10000 cu_paid_amt + , (cu_receivable_amt + pr_exempt_cu_amt + cu_exempt_cu_amt)/10000 cu_receivable_amt + , (- cu_paid_pr_amt + cu_offset_pr_amt)/10000 pr_paid_amt + , (pr_total_receivable_amt + pr_total_received_amt + cu_early_exempt_pr_amt + cu_exempt_pr_amt)/10000 pr_receivable_amt +from dwd_finance_fees_serial_d a + inner 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 1=1 + ${if(len(p_startdate) == 0,"","and ym = '" + p_startdate + "'")} + ${if(len(p_feestype) == 0,"","and ParentCostCode = '" + p_feestype+ "'")} + ${if(len(p_area) == 0,"","and b.organ_code = '" + p_area+ "'")} \ No newline at end of file diff --git a/finereport/xiazuan/1_finance/2_今日收费情况.sql b/finereport/xiazuan/1_finance/2_今日收费情况.sql new file mode 100644 index 0000000..89b39ce --- /dev/null +++ b/finereport/xiazuan/1_finance/2_今日收费情况.sql @@ -0,0 +1,17 @@ +-- dic_片区 + +SELECT DISTINCT + organ_code AS 片区id, + organ_name AS 片区名称 +FROM dim_organ_mapping + + +-- report_今日收费 + + +select * from dws_finance_today_fees_d +where 1=1 + ${if(len(p_area) == 0,"","and organ_code = '" + p_area+ "'")} +order by organ_code, comm_id + + diff --git a/finereport/xiazuan/1_finance/3_现金流贡献图.sql b/finereport/xiazuan/1_finance/3_现金流贡献图.sql new file mode 100644 index 0000000..57511f6 --- /dev/null +++ b/finereport/xiazuan/1_finance/3_现金流贡献图.sql @@ -0,0 +1,20 @@ +-- dic_片区 + + +SELECT DISTINCT + organ_code AS 片区id, + organ_name AS 片区名称 +FROM dim_organ_mapping + + +-- report_现金流 + +select + ${if(len(p_area) == 0,"organ_name name","comm_name name")} + , sum(sum_cash) sum_cash +from ods_caiwu_fullaperture +where 1=1 + ${if(len(p_startdate) == 0,"","and yr_month = '" + left(p_startdate,4) + right(p_startdate,2) + "'")} + ${if(len(p_area) == 0,"","and organ_code = '" + p_area+ "'")} +group by ${if(len(p_area) == 0,"organ_name","comm_name")} +order by sum(sum_cash) desc \ No newline at end of file diff --git a/finereport/xiazuan/1_finance/4_收入预算完成情况.sql b/finereport/xiazuan/1_finance/4_收入预算完成情况.sql new file mode 100644 index 0000000..de1ba97 --- /dev/null +++ b/finereport/xiazuan/1_finance/4_收入预算完成情况.sql @@ -0,0 +1,39 @@ +-- dic_门店 + +SELECT DISTINCT + comm_id AS 项目id,/*门店*/ + comm_name AS 项目名称 +FROM dim_organ_mapping +WHERE 1=1 + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + + + +-- dic_片区 + +SELECT DISTINCT + organ_code AS 片区id, + organ_name AS 片区名称 +FROM dim_organ_mapping + + +-- report_收入成本利润预算填报 + +select + ${if(len(p_area) == 0,"organ_code code, organ_name name,","comm_id code, comm_name name,")} + yr_month, category, yslx, index_income_target, index_income_fact, income_completion_rate +from( + select organ_code, organ_name, comm_id, comm_name, yr_month, category, '收入' yslx, index_income_target, index_income_fact, income_completion_rate + from ods_caiwu_feecollection + union all + select organ_code, organ_name, comm_id, comm_name, yr_month, category, '成本' yslx, index_cost_target, index_cost_fact, cost_completion_rate + from ods_caiwu_feecollection + union all + select organ_code, organ_name, comm_id, comm_name, yr_month, category, '利润' yslx, index_profit_target, profit_completion_rate, income_completion_rate + from ods_caiwu_feecollection + union all + select organ_code, organ_name, comm_id, comm_name, yr_month, category, '市拓' yslx, index_market_target, index_market_fact, market_completion_rate + from ods_caiwu_feecollection + ) a where yslx = ${"'" + p_yslx + "'"} + ${if(len(p_startdate) == 0,"","and yr_month = '" + p_startdate + "'")} + ${if(len(p_area) == 0,"","and organ_code = '" + p_area+ "'")} diff --git a/finereport/xiazuan/2_operation/合同到期明细.sql b/finereport/xiazuan/2_operation/合同到期明细.sql new file mode 100644 index 0000000..dde0509 --- /dev/null +++ b/finereport/xiazuan/2_operation/合同到期明细.sql @@ -0,0 +1 @@ +-- todo \ No newline at end of file diff --git a/finereport/xiazuan/3_property/1_客户满意度得分明细.sql b/finereport/xiazuan/3_property/1_客户满意度得分明细.sql new file mode 100644 index 0000000..297ef4a --- /dev/null +++ b/finereport/xiazuan/3_property/1_客户满意度得分明细.sql @@ -0,0 +1,78 @@ +-- dict_分析视角 + +WITH T1 AS ( + SELECT '片区' AS 维度 + UNION ALL + SELECT '业务条线' AS 维度 +/*UNION ALL +SELECT '生命周期' AS 维度*/ +) +SELECT 维度 FROM T1 +WHERE 1=1 + + +-- report_1_按片区得分 + +SELECT + organ_name, + SUM(IFNULL(index_mydf,0)) AS 满意得分 +FROM ods_wuye_complaint_half_year +WHERE yr = '${p_yr}' + AND t_quarter = '${p_jd}' +GROUP BY organ_name + + +-- report_1_按业务条线得分 + + +SELECT + business AS 业务条线, + index_df AS 最终得分 +FROM ods_wuye_complaint_business +WHERE yr = '${p_yr}' + AND jd = '${p_jd}' + + +-- report_表格1 + + WITH T1 AS (/*各片区目标*/ +SELECT DISTINCT + organ_name, + organ_target +FROM ods_wuye_satisfaction_target +WHERE yr = '${p_yr}' +),T2 AS (/*各片区得分*/ +SELECT + organ_name, + index_wl_yxybl AS 稳老有效样本量, + index_wl_myl AS 稳老满意量, + index_mwl_yxybl AS 磨稳老有效样本量, + index_mwl_myl AS 磨稳老满意量, + index_mydf AS 满意得分 +FROM ods_wuye_complaint_half_year +WHERE yr = '${p_yr}' + AND t_quarter = '${p_jd}' +) +SELECT + T1.organ_name AS 片区名称, + '${p_jd}' AS 季度, + T2.满意得分, + T1.organ_target AS 片区目标, + T2.磨稳老有效样本量, + T2.磨稳老满意量 +FROM T1 LEFT JOIN T2 ON T1.organ_name = T2.organ_name + + +-- report_表格2 + +SELECT + organ_name AS 片区名称, + SUM(CASE WHEN business = '安全秩序管理' THEN index_df ELSE 0 END ) AS 安全秩序管理, + SUM(CASE WHEN business = '保洁服务' THEN index_df ELSE 0 END ) AS 保洁服务, + SUM(CASE WHEN business = '绿化维护' THEN index_df ELSE 0 END ) AS 绿化维护, + SUM(CASE WHEN business = '客服服务' THEN index_df ELSE 0 END ) AS 客服服务, + SUM(CASE WHEN business = '上门维修服务' THEN index_df ELSE 0 END ) AS 上门维修服务 +FROM ods_wuye_complaint_business +WHERE yr = '${p_yr}' + AND jd = '${p_jd}' +GROUP BY organ_name From c71620b9364ad76baba02a649f0a6551b1d7c267 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Wed, 24 Jul 2024 22:31:22 +0800 Subject: [PATCH 05/89] =?UTF-8?q?=E5=9B=9B=E5=A4=A7=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=E6=8C=87=E6=A0=87=E5=AE=8C=E6=88=90=E6=83=85=E5=86=B5=E5=A1=AB?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8+=E5=B7=A1=E6=9F=A5=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E7=8E=87=E6=95=B0=E6=8D=AE=E4=B8=8D=E4=B8=80=E8=87=B4=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E6=8E=92=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/dataSources.xml | 12 +++ .idea/sqldialects.xml | 3 + ...dwd_engine_equipment_inspection_task_d.sql | 5 +- finereport/kanban/pc/工程.sql | 64 +++++++++++++- finereport/kanban/pc/总裁.sql | 38 ++++++++- .../多经四大业务指标完成情况填报表.sql | 85 +++++++++++++++++++ 映射表规范.md | 6 ++ 7 files changed, 208 insertions(+), 5 deletions(-) create mode 100644 finereport/tianbao/6_innovation/多经四大业务指标完成情况填报表.sql diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml index 7c36f1f..02e1a61 100644 --- a/.idea/dataSources.xml +++ b/.idea/dataSources.xml @@ -28,5 +28,17 @@ $ProjectFileDir$ + + sqlserver.ms + true + com.microsoft.sqlserver.jdbc.SQLServerDriver + jdbc:sqlserver://172.18.96.4:1433 + + + + + + $ProjectFileDir$ + \ No newline at end of file diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index c3f8137..0dfa1b4 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -5,6 +5,7 @@ + @@ -12,6 +13,8 @@ + + diff --git a/dw/dwd/dwd_engine_equipment_inspection_task_d.sql b/dw/dwd/dwd_engine_equipment_inspection_task_d.sql index b3ae6a3..f09a28f 100644 --- a/dw/dwd/dwd_engine_equipment_inspection_task_d.sql +++ b/dw/dwd/dwd_engine_equipment_inspection_task_d.sql @@ -8,4 +8,7 @@ select , TaskEndTime -- 任务结束时间 , TaskStatue -- 任务状态 from ods_erp_tb_eq_flow_task_inspection_d -where IsClose = 0 \ No newline at end of file +where IsClose = 0 +-- and CommId = '214309' +-- and TaskEndTime <= DATE_SUB(CURDATE(),INTERVAL 1 SECOND) +-- and TaskEndTime>='2024-07-01' \ No newline at end of file diff --git a/finereport/kanban/pc/工程.sql b/finereport/kanban/pc/工程.sql index 3ac5c07..a53c238 100644 --- a/finereport/kanban/pc/工程.sql +++ b/finereport/kanban/pc/工程.sql @@ -84,8 +84,8 @@ where 1=1 ${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,")} @@ -99,6 +99,65 @@ where 1=1 ${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 @@ -110,7 +169,6 @@ where ParentCostCode = '0008' -- 异常抬杆 - select organ_code , organ_name , sum(manualOutNum) manualOutNum diff --git a/finereport/kanban/pc/总裁.sql b/finereport/kanban/pc/总裁.sql index fc641c3..6283126 100644 --- a/finereport/kanban/pc/总裁.sql +++ b/finereport/kanban/pc/总裁.sql @@ -14,4 +14,40 @@ where 1=1 ${if(len(organ)=0,"","and organ_code = '"+organ+"'")} and left(ym,4) = '2024' group by ym -order by ym asc \ No newline at end of file +order by ym asc + + + +-- 【设备巡检】 + +-- 【old】 +select + sum(task_finish_num) + , sum(task_num) + , sum(task_finish_num) / sum(task_num) inspection_finish_rate +FROM dws_engine_equipment_inspect_task_m + where task_ym = date_format(current_date(),'%Y%m') + ${if(len(organ)=0,"","and organ_code = '"+organ+"'")} +; + +-- 【new】 + +select +comm_id +,comm_name +,task_ym + sum(task_finish_num) / sum(task_num) as inspection_finish_rate +FROM dws_engine_equipment_inspect_task_m +where task_ym = date_format(current_date(),'%Y%m') +group by + comm_id + ,comm_name + ,task_ym +; + + ${if(len(organ)=0,"","and organ_code = '"+organ+"'")} + + + + + 设备巡查.select(task_finish_num) / 设备巡查.select(task_num) \ No newline at end of file diff --git a/finereport/tianbao/6_innovation/多经四大业务指标完成情况填报表.sql b/finereport/tianbao/6_innovation/多经四大业务指标完成情况填报表.sql new file mode 100644 index 0000000..362cf6a --- /dev/null +++ b/finereport/tianbao/6_innovation/多经四大业务指标完成情况填报表.sql @@ -0,0 +1,85 @@ +drop table if exists dw.ods_innoveco_metrics_finish_d; +CREATE TABLE IF NOT EXISTS dw.ods_innoveco_metrics_finish_d ( + id INT AUTO_INCREMENT PRIMARY KEY COMMENT '自增id' + ,ym VARCHAR(50) COMMENT '年月' + ,organ_code VARCHAR(50) COMMENT '片区ID' + ,organ_name VARCHAR(50) COMMENT '片区名称' + ,business_type VARCHAR(50) COMMENT '业务类型' + ,revenue_type VARCHAR(50) COMMENT '收入类型' + ,revenue_value DECIMAL(16,2) COMMENT '收入值' + ,update_time datetime COMMENT '更新时间' + ,update_user VARCHAR(100) COMMENT '更新人' + +)COMMENT = '多经四大业务指标完成情况填报表' +; + + + +truncate table dw.ods_innoveco_metrics_finish_d; + +select + id -- 自增id' + ,ym -- 年月' + ,organ_code + ,organ_name -- 片区' + ,business_type -- 业务类型' + ,revenue_type -- 收入' + ,revenue_value -- 收入值' +,update_user +,update_time +from dw.ods_innoveco_metrics_finish_d +; + + +-- 【tianbao_innoveco_input】 + +select + id -- 自增id' + ,ym -- 年月' + ,organ_name -- 片区' + ,business_type -- 业务类型' + ,revenue_type -- 收入' + ,revenue_value -- 收入值' +from dw.ods_innoveco_metrics_finish_d +where ym = '${p_ym}' +; + + + +-- 【erp_片区】 +SELECT + organ_code +,organ_name +FROM +( + SELECT DISTINCT + organ_code AS organ_code + ,organ_name AS organ_name + , CASE + WHEN organ_code = '0102' THEN 1 -- 成都片区 + WHEN organ_code = '0101' THEN 2 -- 乐山片区 + WHEN organ_code = '0115' THEN 3 -- 眉山片区 + WHEN organ_code = '0120' THEN 4 -- 攀西片区 + WHEN organ_code = '0106' THEN 5 -- 长春片区 + WHEN organ_code = '0109' THEN 6 -- 大湾片区 + WHEN organ_code = '0108' THEN 7 -- 商写片区 + WHEN organ_code = '0116' THEN 8 -- 川东北片区 + WHEN organ_code = '0103' THEN 9 -- 库尔勒片区 + WHEN organ_code = '0117' THEN 10 -- 乌鲁木齐片区 + WHEN organ_code = '0118' THEN 11 -- 喀什片区 + WHEN organ_code = '0114' THEN 13 -- 雅华片区 + else 999 + END AS RK +FROM dim_organ_mapping +where organ_code is not null +and organ_code <> '0121' +UNION +SELECT + DISTINCT + cx_oragan_code AS organ_code + , cx_oragan_name AS organ_name + , 14 AS RK +FROM dim_organ_mapping +where cx_oragan_code = '6001' + )T +ORDER BY T.RK; diff --git a/映射表规范.md b/映射表规范.md index 9e6eb95..707ffef 100644 --- a/映射表规范.md +++ b/映射表规范.md @@ -25,3 +25,9 @@ | 214351002 | 【成都】港基·叠香庄园 | | 214350002 | 【成都】翰香府 | + +【创新四大业务指标完成情况 新增片区如下】 2024-07-24 + +| 片区id | 片区 | +|------|----------| +| 6001 | 资阳佳美| From b47163472f6607b076c166b3e2242f665c6c2b7a Mon Sep 17 00:00:00 2001 From: yangkunan Date: Thu, 25 Jul 2024 22:06:28 +0800 Subject: [PATCH 06/89] =?UTF-8?q?=E5=9B=9B=E5=A4=A7=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=E6=8C=87=E6=A0=87=E5=AE=8C=E6=88=90=E6=83=85=E5=86=B5=E5=A1=AB?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E4=BC=98=E5=8C=96+=E5=87=BA=E7=A7=9F?= =?UTF-8?q?=E7=8E=87=E6=95=B0=E6=8D=AE=E5=BC=82=E5=B8=B8=E6=8E=92=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/dataSources.xml | 12 ++++ .idea/sqldialects.xml | 5 ++ finereport/kanban/mobile/工程_mobile.sql | 0 finereport/kanban/mobile/法务_mobile.sql | 0 finereport/kanban/mobile/物业_mobile.sql | 0 finereport/kanban/mobile/财务_mobile.sql | 0 finereport/kanban/mobile/运营_mobile.sql | 0 finereport/kanban/pc/人力.sql | 0 finereport/kanban/pc/创新生态.sql | 72 +++++++++++++++++++ finereport/kanban/pc/商业.sql | 71 ++++++++++++++++++ finereport/kanban/pc/法务.sql | 0 finereport/kanban/pc/财务.sql | 0 finereport/kanban/pc/运营.sql | 0 .../多经四大业务指标完成情况填报表.sql | 28 ++++---- .../xiazuan/2_operation/1_计划运营情况.sql | 0 .../xiazuan/2_operation/4_接房入住情况.sql | 0 .../xiazuan/3_property/2_报事情况报表.sql | 0 .../xiazuan/3_property/3_飞检得分明细.sql | 0 .../6_innovation/1_新零售订单明细_片区.sql | 0 .../6_innovation/2_新零售订单明细_品类.sql | 0 .../6_innovation/3_新零售销售预警明细.sql | 0 .../6_innovation/4_小悦到家服务销售明细.sql | 0 .../6_innovation/5_多经合同到期情况.sql | 0 .../xiazuan/7_business/1_出租率明细报表.sql | 31 ++++++++ .../xiazuan/8_legal/1_法务应收款智能报表.sql | 0 .../xiazuan/8_legal/2_移交数据明细报表.sql | 0 映射表规范.md | 7 +- 27 files changed, 210 insertions(+), 16 deletions(-) create mode 100644 finereport/kanban/mobile/工程_mobile.sql create mode 100644 finereport/kanban/mobile/法务_mobile.sql create mode 100644 finereport/kanban/mobile/物业_mobile.sql create mode 100644 finereport/kanban/mobile/财务_mobile.sql create mode 100644 finereport/kanban/mobile/运营_mobile.sql create mode 100644 finereport/kanban/pc/人力.sql create mode 100644 finereport/kanban/pc/创新生态.sql create mode 100644 finereport/kanban/pc/商业.sql create mode 100644 finereport/kanban/pc/法务.sql create mode 100644 finereport/kanban/pc/财务.sql create mode 100644 finereport/kanban/pc/运营.sql create mode 100644 finereport/xiazuan/2_operation/1_计划运营情况.sql create mode 100644 finereport/xiazuan/2_operation/4_接房入住情况.sql create mode 100644 finereport/xiazuan/3_property/2_报事情况报表.sql create mode 100644 finereport/xiazuan/3_property/3_飞检得分明细.sql create mode 100644 finereport/xiazuan/6_innovation/1_新零售订单明细_片区.sql create mode 100644 finereport/xiazuan/6_innovation/2_新零售订单明细_品类.sql create mode 100644 finereport/xiazuan/6_innovation/3_新零售销售预警明细.sql create mode 100644 finereport/xiazuan/6_innovation/4_小悦到家服务销售明细.sql create mode 100644 finereport/xiazuan/6_innovation/5_多经合同到期情况.sql create mode 100644 finereport/xiazuan/7_business/1_出租率明细报表.sql create mode 100644 finereport/xiazuan/8_legal/1_法务应收款智能报表.sql create mode 100644 finereport/xiazuan/8_legal/2_移交数据明细报表.sql diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml index 02e1a61..3a8ea2e 100644 --- a/.idea/dataSources.xml +++ b/.idea/dataSources.xml @@ -40,5 +40,17 @@ $ProjectFileDir$ + + mysql.8 + true + com.mysql.cj.jdbc.Driver + jdbc:mysql://172.18.1.100:3306 + + + + + + $ProjectFileDir$ + \ No newline at end of file diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 0dfa1b4..42cee4a 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -3,15 +3,20 @@ + + + + + diff --git a/finereport/kanban/mobile/工程_mobile.sql b/finereport/kanban/mobile/工程_mobile.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/kanban/mobile/法务_mobile.sql b/finereport/kanban/mobile/法务_mobile.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/kanban/mobile/物业_mobile.sql b/finereport/kanban/mobile/物业_mobile.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/kanban/mobile/财务_mobile.sql b/finereport/kanban/mobile/财务_mobile.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/kanban/mobile/运营_mobile.sql b/finereport/kanban/mobile/运营_mobile.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/kanban/pc/人力.sql b/finereport/kanban/pc/人力.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/kanban/pc/创新生态.sql b/finereport/kanban/pc/创新生态.sql new file mode 100644 index 0000000..2c20f53 --- /dev/null +++ b/finereport/kanban/pc/创新生态.sql @@ -0,0 +1,72 @@ +-- 【report_指标卡_填报】 + +SELECT +-- 收入汇总费用 + SUM(CASE WHEN business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) as revenue_value -- 四大业务收入 +,SUM(CASE WHEN revenue_type = '附属' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) AS revenue_value_1 -- 空间运营收入 +,SUM(CASE WHEN revenue_type = '拎包' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) AS revenue_value_2 -- 美居收入 +,SUM(CASE WHEN revenue_type = '创新' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) AS revenue_value_3 -- 新零售收入 +,SUM(CASE WHEN revenue_type = '资产' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) AS revenue_value_4 -- 资产出租收入 + +-- 收入完成率 +,CASE WHEN SUM(CASE WHEN business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) = 0 THEN 0 + ELSE SUM(CASE WHEN business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) + / SUM(CASE WHEN business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) + END AS finish_rate -- 四大业务收入完成率 + +,CASE WHEN SUM(CASE WHEN revenue_type = '附属' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) = 0 THEN 0 + ELSE SUM(CASE WHEN revenue_type = '附属' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) +/ SUM(CASE WHEN revenue_type = '附属' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) + END AS finish_rate_1 -- 空间运营收入完成率 + +,CASE WHEN SUM(CASE WHEN revenue_type = '拎包' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) = 0 THEN 0 + ELSE SUM(CASE WHEN revenue_type = '拎包' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) +/ SUM(CASE WHEN revenue_type = '拎包' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) + END AS finish_rate_2 -- 美居收入完成率 + +,CASE WHEN SUM(CASE WHEN revenue_type = '创新' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) = 0 THEN 0 + ELSE SUM(CASE WHEN revenue_type = '创新' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) +/ SUM(CASE WHEN revenue_type = '创新' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) + END AS finish_rate_3 -- 新零售收入完成率 + +,CASE WHEN SUM(CASE WHEN revenue_type = '资产' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) = 0 THEN 0 + ELSE SUM(CASE WHEN revenue_type = '资产' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) +/ SUM(CASE WHEN revenue_type = '资产' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) + END AS finish_rate_4 -- 资产出租收入完成率 + +FROM dw.ods_innoveco_metrics_finish_d +WHERE business_type in('收入','目标') -- 业务类型 +AND YM = '${p_ym}' +${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +; + + +-- report_指标卡 + + + WITH T1 AS (/*各类别应收与实收*/ +SELECT + index_type, + SUM(IFNULL(index_receivable,0)) AS 应收金额, + SUM(IFNULL(index_receipts,0)) AS 实收金额 +FROM ods_caiwu_profit +WHERE 1=1 +-- AND `year_month` = '${REPLACE(p_ym,"-","")}' + -- ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + -- ${IF(LEN(p_prgject)>0," AND comm_id IN ('"+JOINARRAY(p_prgject,"','")+"')", "")} + GROUP BY index_type + ) +SELECT + SUM(CASE WHEN index_type = '附属资源/空间运营' THEN 实收金额 ELSE 0 END) AS 空间运营实收, + SUM(CASE WHEN index_type = '附属资源/空间运营' THEN 实收金额 / 应收金额 ELSE 0 END) AS 空间运营完成率, + SUM(CASE WHEN index_type = '美居' THEN 实收金额 ELSE 0 END) AS 美居实收, + SUM(CASE WHEN index_type = '美居' THEN 实收金额 / 应收金额 ELSE 0 END) AS 美居完成率, + SUM(CASE WHEN index_type = '社商/新零售' THEN 实收金额 ELSE 0 END) AS 新零售实收, + SUM(CASE WHEN index_type = '社商/新零售' THEN 实收金额 / 应收金额 ELSE 0 END) AS 新零售完成率, + SUM(CASE WHEN index_type = '资产运营/资产租售' THEN 实收金额 ELSE 0 END) AS 资产出租实收, + SUM(CASE WHEN index_type = '资产运营/资产租售' THEN 实收金额 / 应收金额 ELSE 0 END) AS 资产出租完成率, + SUM(实收金额) AS 全部实收, + IFNULL(SUM(实收金额) / SUM(应收金额),0) AS 完成率 +FROM T1 +; + diff --git a/finereport/kanban/pc/商业.sql b/finereport/kanban/pc/商业.sql new file mode 100644 index 0000000..7107868 --- /dev/null +++ b/finereport/kanban/pc/商业.sql @@ -0,0 +1,71 @@ +-- 【出租率】 + + +SELECT + `type` + , sum(lease_area)/sum(construction_area) rent_rate +FROM dws_business_rent_rate_d + ${if(len(project) == 0,"","where project_id in (" + project + ")")} +group by `type` + + + +-- 【出租面积】 + +SELECT + project_id + , project_name + , `type` + , construction_area/10000 construction_area -- 建筑面积 + , lease_area/10000 lease_area + , lease_area/construction_area rent_rate + +SELECT +sum(lease_area ) as lease_area -- 出租面积 +,sum(construction_area) as construction_area -- 建筑面积 +, sum(lease_area ) / sum(construction_area) as rate +FROM dw.dws_business_rent_rate_d +where lease_end_date >= '2024-07-25' -- 合同结束时间 + and lease_start_date <= '2024-07-25' + +; + + + + +${if(len(project) == 0,"","where project_id in (" + project + ")")} + +; +-- 出租率计算: sum(出租面积.select(lease_area))/sum(出租面积.select(construction_area)) -- 正确值: 33.45% + + + +-- 【收款金额】 +SELECT + sum(received_money) 实收金额 +,sum(current_sure_money) 收款金额 +,sum(received_money) / sum(current_sure_money) rate + +,sum(areare_money) as areare_money +,sum(current_sure_money) as current_sure_money + +,sum(areare_money) / sum(current_sure_money) as rate1 +FROM +( +SELECT + project_id + , project_name + , accrual_month + , current_sure_money/10000 current_sure_money -- 收款金额 收款金额 + , received_money/10000 received_money -- 实收金额 + , areare_money/10000 areare_money -- 欠收金额 +FROM dws_business_bill_m +where left(accrual_month,7) = '2024-06' + -- ${if(len(project) == 0,"","and project_id in (" + project + ")")} + )T + +-- 收缴率 64.8 截至 24 + + -- sum(收款金额.select(received_money))/sum(收款金额.select(current_sure_money)) + +-- 欠缴 / 应缴 \ No newline at end of file diff --git a/finereport/kanban/pc/法务.sql b/finereport/kanban/pc/法务.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/kanban/pc/财务.sql b/finereport/kanban/pc/财务.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/kanban/pc/运营.sql b/finereport/kanban/pc/运营.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/tianbao/6_innovation/多经四大业务指标完成情况填报表.sql b/finereport/tianbao/6_innovation/多经四大业务指标完成情况填报表.sql index 362cf6a..f1b6b3f 100644 --- a/finereport/tianbao/6_innovation/多经四大业务指标完成情况填报表.sql +++ b/finereport/tianbao/6_innovation/多经四大业务指标完成情况填报表.sql @@ -56,17 +56,17 @@ FROM organ_code AS organ_code ,organ_name AS organ_name , CASE - WHEN organ_code = '0102' THEN 1 -- 成都片区 - WHEN organ_code = '0101' THEN 2 -- 乐山片区 - WHEN organ_code = '0115' THEN 3 -- 眉山片区 - WHEN organ_code = '0120' THEN 4 -- 攀西片区 - WHEN organ_code = '0106' THEN 5 -- 长春片区 - WHEN organ_code = '0109' THEN 6 -- 大湾片区 - WHEN organ_code = '0108' THEN 7 -- 商写片区 - WHEN organ_code = '0116' THEN 8 -- 川东北片区 - WHEN organ_code = '0103' THEN 9 -- 库尔勒片区 - WHEN organ_code = '0117' THEN 10 -- 乌鲁木齐片区 - WHEN organ_code = '0118' THEN 11 -- 喀什片区 + WHEN organ_code = '0102' THEN 2 -- 成都片区 + WHEN organ_code = '0101' THEN 3 -- 乐山片区 + WHEN organ_code = '0115' THEN 4 -- 眉山片区 + WHEN organ_code = '0120' THEN 5 -- 攀西片区 + WHEN organ_code = '0106' THEN 6 -- 长春片区 + WHEN organ_code = '0109' THEN 7 -- 大湾片区 + WHEN organ_code = '0108' THEN 8 -- 商写片区 + WHEN organ_code = '0116' THEN 9 -- 川东北片区 + WHEN organ_code = '0103' THEN 10 -- 库尔勒片区 + WHEN organ_code = '0117' THEN 11 -- 乌鲁木齐片区 + WHEN organ_code = '0118' THEN 12 -- 喀什片区 WHEN organ_code = '0114' THEN 13 -- 雅华片区 else 999 END AS RK @@ -78,8 +78,10 @@ SELECT DISTINCT cx_oragan_code AS organ_code , cx_oragan_name AS organ_name - , 14 AS RK + ,CASE WHEN cx_oragan_code = '6002' THEN 1 + WHEN cx_oragan_code = '6001' THEN 14 + END AS RK FROM dim_organ_mapping -where cx_oragan_code = '6001' +where cx_oragan_code in('6001','6002') )T ORDER BY T.RK; diff --git a/finereport/xiazuan/2_operation/1_计划运营情况.sql b/finereport/xiazuan/2_operation/1_计划运营情况.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/xiazuan/2_operation/4_接房入住情况.sql b/finereport/xiazuan/2_operation/4_接房入住情况.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/xiazuan/3_property/2_报事情况报表.sql b/finereport/xiazuan/3_property/2_报事情况报表.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/xiazuan/3_property/3_飞检得分明细.sql b/finereport/xiazuan/3_property/3_飞检得分明细.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/xiazuan/6_innovation/1_新零售订单明细_片区.sql b/finereport/xiazuan/6_innovation/1_新零售订单明细_片区.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/xiazuan/6_innovation/2_新零售订单明细_品类.sql b/finereport/xiazuan/6_innovation/2_新零售订单明细_品类.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/xiazuan/6_innovation/3_新零售销售预警明细.sql b/finereport/xiazuan/6_innovation/3_新零售销售预警明细.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/xiazuan/6_innovation/4_小悦到家服务销售明细.sql b/finereport/xiazuan/6_innovation/4_小悦到家服务销售明细.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/xiazuan/6_innovation/5_多经合同到期情况.sql b/finereport/xiazuan/6_innovation/5_多经合同到期情况.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/xiazuan/7_business/1_出租率明细报表.sql b/finereport/xiazuan/7_business/1_出租率明细报表.sql new file mode 100644 index 0000000..b9ab7e9 --- /dev/null +++ b/finereport/xiazuan/7_business/1_出租率明细报表.sql @@ -0,0 +1,31 @@ +-- 【dic_项目】 + +SELECT DISTINCT + project_id AS 项目id, + project_name AS 项目名称 +FROM dws_business_rent_rate_d +WHERE 1=1 + ${IF(LEN(p_type)>0,"AND type IN ('"+JOINARRAY(p_type,"','")+"')","")} + + +-- 【dic_业态】 + +SELECT DISTINCT + type AS 业态 +FROM dws_business_rent_rate_d + + +-- 【report_1_指标卡】 + +SELECT + project_name AS 项目, + COUNT(project_id) AS 资产数量, + SUM(IFNULL(construction_area,0)) AS 资产面积, + SUM(IFNULL(lease_area,0)) AS 已出租面积 +FROM dws_business_rent_rate_d T1 +WHERE 1=1 + ${IF(LEN(p_startdate)>0,"AND T1.lease_start_date <= '"+FORMAT(p_startdate,"yyyy-MM-dd 00:00:00")+"'","")} + ${IF(LEN(p_enddate)>0,"AND T1.lease_end_date >= '"+FORMAT(p_enddate,"yyyy-MM-dd 00:00:00")+"'","")} + ${IF(LEN(p_type)>0," AND T1.type IN ('"+JOINARRAY(p_type,"','")+"')", "")} + ${IF(LEN(p_project)>0," AND T1.project_id IN ('"+JOINARRAY(p_project,"','")+"')", "")} +GROUP BY project_name \ No newline at end of file diff --git a/finereport/xiazuan/8_legal/1_法务应收款智能报表.sql b/finereport/xiazuan/8_legal/1_法务应收款智能报表.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/xiazuan/8_legal/2_移交数据明细报表.sql b/finereport/xiazuan/8_legal/2_移交数据明细报表.sql new file mode 100644 index 0000000..e69de29 diff --git a/映射表规范.md b/映射表规范.md index 707ffef..bf7fe09 100644 --- a/映射表规范.md +++ b/映射表规范.md @@ -28,6 +28,7 @@ 【创新四大业务指标完成情况 新增片区如下】 2024-07-24 -| 片区id | 片区 | -|------|----------| -| 6001 | 资阳佳美| +| 片区id | 片区 | +|------|------| +| 6001 | 资阳佳美 | +| 6002 | 总部职能 | From dd57251f66ecb6b7f7535a2f42afd3b73c054f50 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Mon, 29 Jul 2024 17:57:25 +0800 Subject: [PATCH 07/89] =?UTF-8?q?=E5=B7=A5=E7=A8=8B=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=8C=87=E6=A0=87=E6=A0=B8=E5=AF=B9=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D+=E6=80=BB=E8=A3=81=E7=9C=8B=E6=9D=BF=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 3 + finereport/kanban/pc/商业.sql | 24 +++-- finereport/kanban/pc/工程.sql | 153 +++++++++++++++++++++++++- finereport/kanban/pc/总裁.sql | 197 +++++++++++++++++++++++++++++++++- 4 files changed, 360 insertions(+), 17 deletions(-) diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 42cee4a..24dba3b 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -2,13 +2,16 @@ + + + diff --git a/finereport/kanban/pc/商业.sql b/finereport/kanban/pc/商业.sql index 7107868..702eaaf 100644 --- a/finereport/kanban/pc/商业.sql +++ b/finereport/kanban/pc/商业.sql @@ -1,5 +1,6 @@ +-- --------------------- -- 【出租率】 - +-- --------------------- SELECT `type` @@ -7,19 +8,19 @@ SELECT FROM dws_business_rent_rate_d ${if(len(project) == 0,"","where project_id in (" + project + ")")} group by `type` - +; -- 【出租面积】 -SELECT +/*SELECT project_id , project_name , `type` , construction_area/10000 construction_area -- 建筑面积 , lease_area/10000 lease_area , lease_area/construction_area rent_rate - +*/ SELECT sum(lease_area ) as lease_area -- 出租面积 ,sum(construction_area) as construction_area -- 建筑面积 @@ -31,25 +32,26 @@ where lease_end_date >= '2024-07-25' -- 合同结束时间 ; - - -${if(len(project) == 0,"","where project_id in (" + project + ")")} +-- ${if(len(project) == 0,"","where project_id in (" + project + ")")} ; -- 出租率计算: sum(出租面积.select(lease_area))/sum(出租面积.select(construction_area)) -- 正确值: 33.45% +-- 业务反馈 建筑面积 :335335.36 +-- 租赁面积: 298452.2 +-- 出租率: 0.890011122000376 +-- ============================================================================================================ + +-- ------------------------------ -- 【收款金额】 +-- ------------------------------- SELECT sum(received_money) 实收金额 ,sum(current_sure_money) 收款金额 ,sum(received_money) / sum(current_sure_money) rate -,sum(areare_money) as areare_money -,sum(current_sure_money) as current_sure_money - -,sum(areare_money) / sum(current_sure_money) as rate1 FROM ( SELECT diff --git a/finereport/kanban/pc/工程.sql b/finereport/kanban/pc/工程.sql index a53c238..a062b25 100644 --- a/finereport/kanban/pc/工程.sql +++ b/finereport/kanban/pc/工程.sql @@ -5,7 +5,7 @@ SELECT DISTINCT organ_code AS 片区id, organ_name AS 片区名称 FROM dim_organ_mapping - +; -- report_车场启费 @@ -27,6 +27,23 @@ from ( 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_设备完好率 @@ -45,7 +62,7 @@ union all select '巡查点位数', count(*) from dim_engine_point_d union all select '设施设备总数', count(*) from dim_engine_equipment_d - +; -- 能耗环比 select * @@ -54,7 +71,7 @@ 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 @@ -64,7 +81,7 @@ where MeterType = '电表' ${IF(LEN(p_ym)>0," AND list_ym ='" + left(p_ym,4) + right(p_ym,2) + "'","")} order by Dosage desc limit 5 - +; -- 能耗同比 SELECT @@ -176,4 +193,130 @@ select , 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 \ No newline at end of file +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 +; \ No newline at end of file diff --git a/finereport/kanban/pc/总裁.sql b/finereport/kanban/pc/总裁.sql index 6283126..70c79d5 100644 --- a/finereport/kanban/pc/总裁.sql +++ b/finereport/kanban/pc/总裁.sql @@ -50,4 +50,199 @@ group by - 设备巡查.select(task_finish_num) / 设备巡查.select(task_num) \ No newline at end of file + 设备巡查.select(task_finish_num) / 设备巡查.select(task_num) + + +-- ---------------------------------- +-- report_商业出租率 +-- --------------------------------- +select sum(lease_area)/sum(construction_area) rent_rate +FROM dws_business_rent_rate_d a + left join (select distinct id, erp_id from ods_bs_project_d) b + on a.project_id = b.id + left join (select distinct organ_code, organ_name, comm_id, comm_name from dim_organ_mapping where comm_id is not null) c + on b.erp_id = c.comm_id +where 1=1 + ${if(len(organ)=0,"","and c.organ_code = '"+organ+"'")} + + +-- ---------------------------------- +-- report_商业出租率_new +-- --------------------------------- + +SELECT + T.`type` + ,SUM(T.rentRoomAreaSum) / (SUM(T.rentRoomAreaSum) + SUM(T.notRentRoomAreaSum)) as rent_rate -- 出租率 +FROM + ( + SELECT + B.`type` + ,SUM(CASE WHEN A.business_status = 1 THEN A.construction_area ELSE 0 END ) AS rentRoomAreaSum -- 出租面积 + ,SUM(CASE WHEN A.business_status != 4 AND A.business_status != 1 THEN A.construction_area ELSE 0 END ) AS notRentRoomAreaSum -- 未出租面积 + FROM + ( + SELECT + id + ,erp_id + ,building_id + ,business_status + ,construction_area -- 建筑面积 + FROM dw.ods_bs_room_d -- 商管房间表 + WHERE del_flag = 0 + AND enable_flag = 0 + AND review_status = 2 + )A + LEFT JOIN + ( + select + id + ,project_id + ,project_name + ,`type` -- 业态 商业街,集中商业,写字楼,底商 + from dim_business_building_d + )B + on A.building_id = B.id + LEFT JOIN + ( + select + distinct + organ_code + ,organ_name + ,comm_id + ,comm_name + from dim_organ_mapping + where comm_id is not null + )C + on A.erp_id = C.comm_id + where 1=1 + ${if(len(organ)=0,"","and b.organ_code = '"+ organ+"'")} + GROUP BY + B.`type` + )T +GROUP BY + T.`type` +; + + + + +-- ---------------------------------- +-- report_商业收缴率 +-- --------------------------------- + +select sum(received_money) / sum(current_sure_money) collection_rate +FROM dws_business_bill_m a + left join (select distinct id, erp_id from ods_bs_project_d) b + on a.project_id = b.id + left join (select distinct organ_code, organ_name, comm_id, comm_name from dim_organ_mapping where comm_id is not null) c + on b.erp_id = c.comm_id +where left(accrual_month,7) = '2024-06' + ${if(len(organ)=0,"","and c.organ_code = '"+organ+"'")} + +; + + +-- ---------------------------------- +-- report_商业收缴率_new +-- --------------------------------- + +SELECT + SUM(T.received_money) / SUM(T.current_sure_money) AS collection_rate -- 收缴率 +FROM + ( + SELECT + T1.received_money AS received_money + ,T1.current_sure_money AS current_sure_money + + FROM + ( + SELECT + a.project_id -- 项目id 关联bs_project表 + ,SUM(a.received_money) AS received_money -- 实收金额 + ,SUM(a.current_sure_money) AS current_sure_money -- 实际应收金额=应收金额-合同减免金额 + -- ,SUM(a.under_money) AS under_money -- 欠收金额 + FROM + ( + SELECT + contract_id + ,accrual_month + ,start_period + ,bill_type + ,received_money -- 实收金额 + ,current_sure_money -- 实际应收金额=应收金额-合同减免金额 + ,current_sure_money - received_money as under_money -- 欠收金额 + ,project_id + FROM dw.ods_bs_fi_bills_d + WHERE save_status = 1 -- 账单状态 0是保存 1是审核过的 + -- ${if(len(project) == 0,"","AND project_id in (" + project + ")")} + )a + left join + ( + SELECT + status + ,stop_date + ,id + FROM dw.ods_bs_contract_d + WHERE del_flag = 0 + )bc + on bc.id = a.contract_id + WHERE ((bc.status != 2 and bc.stop_date is null) OR + (bc.stop_date is not null + and ((a.accrual_month <= DATE_FORMAT(bc.stop_date, '%Y-%m') + and a.start_period <= bc.stop_date) + + or a.bill_type = 15) + )) + group by + a.project_id + UNION ALL + SELECT + a.project_id + ,SUM(b.received_amount) AS received_money + ,SUM(b.received_money) AS current_sure_money + -- ,SUM(b.under_money) AS under_money + FROM + ( + SELECT + receive_no -- 催缴单号 + ,project_id + FROM dw.ods_bs_fi_receive_other_d + where recheck_status = 2 + )a + LEFT JOIN + ( + SELECT + receive_no + ,received_amount + ,received_money + ,received_money - received_amount AS under_money + FROM dw.ods_bs_fi_receive_other_item_d + )b + ON a.receive_no = b.receive_no + group by + project_id + )T1 + left join + ( + select + distinct id + ,erp_id + from dw.ods_bs_project_d + ) b + on T1.project_id = b.id + left join + ( + select + distinct + organ_code + ,organ_name + ,comm_id + ,comm_name + from dim_organ_mapping + where comm_id is not null + ) c + on b.erp_id = c.comm_id + ${if(len(organ)=0,"","and c.organ_code = '"+organ+"'")} + )T + +; \ No newline at end of file From 1e62c207667d6ce15ea6fac2a043ce09629d3a9e Mon Sep 17 00:00:00 2001 From: yangkunan Date: Mon, 29 Jul 2024 18:50:08 +0800 Subject: [PATCH 08/89] =?UTF-8?q?=E6=8A=A5=E4=BA=8B=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E7=8E=87=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 2 ++ dw/dws/dws_estate_incident_info_m.sql | 3 ++- .../xiazuan/3_property/2_报事情况报表.sql | 20 +++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 24dba3b..aa81cb8 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -15,6 +15,7 @@ + @@ -26,6 +27,7 @@ + \ No newline at end of file diff --git a/dw/dws/dws_estate_incident_info_m.sql b/dw/dws/dws_estate_incident_info_m.sql index c9861b1..f46662f 100644 --- a/dw/dws/dws_estate_incident_info_m.sql +++ b/dw/dws/dws_estate_incident_info_m.sql @@ -5,7 +5,7 @@ select , b.comm_name , date_format(a.IncidentDate,'%Y%m') incident_ym , count(*) incident_num - , sum(case when ifnull(a.CloseTime,0)=0 then 1 else 0 end) incident_close_num + , sum(case when ifnull(a.CloseTime,0)=0 then 0 else 1 end) incident_close_num , sum(case when a.IsClose=0 and CloseTime is null and a.MainEndDate is null then 1 else 0 end) processing_incident_num , sum(case when a.CloseTime is null and MainEndDate is not null then 1 else 0 end) completed_not_close_incident_num , sum(case when timestampdiff(hour,a.ForwardDateTime, a.IncidentDate)>2 then 1 else 0 end) response_timeout_incident_num @@ -17,6 +17,7 @@ select , sum(case when a.DelayHours is not null then 1 else 0 end) delay_incident_num , sum(case when a.IsTouSu = 1 then 1 else 0 end) tousu_incident_num , sum(case when a.IsClose=1 and a.IsTouSu = 1 then 1 else 0 end) tousu_close_incident_num + , sum(case when ifnull(MainEndDate,'') = '' and IFNULL(CloseTime,'') = '' AND IsClose = 0 then 1 else 0 end) indeal_incident_num from dwd_estate_incident_info_d a inner join (select distinct organ_code, organ_name, comm_id, comm_name from dim_organ_mapping) b on a.CommID = b.comm_id diff --git a/finereport/xiazuan/3_property/2_报事情况报表.sql b/finereport/xiazuan/3_property/2_报事情况报表.sql index e69de29..1d6ee26 100644 --- a/finereport/xiazuan/3_property/2_报事情况报表.sql +++ b/finereport/xiazuan/3_property/2_报事情况报表.sql @@ -0,0 +1,20 @@ +-- ====================================== +-- report_5_完成率 +-- ====================================== + +SELECT + organ_code AS 片区id, + organ_name AS 片区名称, + SUM(IFNULL(incident_num,0)) AS 报事总数, + IFNULL((SUM(IFNULL(response_timely_incident_num,0)) / SUM(IFNULL(incident_num,0))),0) AS 及时响应率, + IFNULL((SUM(IFNULL(completed_incident_num,0)) / SUM(IFNULL(incident_num,0))),0) AS 完成率, + IFNULL((SUM(IFNULL(follow_up_incident_num,0)) / SUM(IFNULL(incident_num,0))),0) AS 回访率, + IFNULL((SUM(IFNULL(incident_close_num,0)) / SUM(IFNULL(incident_num,0))),0) AS 闭单率, + case when (sum(incident_num) - sum(indeal_incident_num)) = 0 THEN 0 + else sum(incident_close_num) / (sum(incident_num) - sum(indeal_incident_num)) + end AS 有效闭单率 +FROM dw.dws_estate_incident_info_m T1 +WHERE 1=1 + ${IF(LEN(p_startdate)>0,"AND T1.incident_ym = '"+FORMAT(CONCATENATE(p_startdate,"-01"),"yyyyMM")+"'","")} + ${IF(LEN(p_area)>0," AND T1.organ_code IN ('"+p_area+"')", "")} +GROUP BY organ_code,organ_name \ No newline at end of file From ddc7bf65809233f4994b975ac54fc76a55bdfa04 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Mon, 5 Aug 2024 17:38:48 +0800 Subject: [PATCH 09/89] =?UTF-8?q?=E5=B7=A5=E7=A8=8B=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8+=E7=89=A9=E4=B8=9A=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E6=8A=A5=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 From ff32b418978527e2bac74d10d1efac214f654290 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 6 Aug 2024 17:45:41 +0800 Subject: [PATCH 10/89] =?UTF-8?q?=E5=88=9B=E6=96=B0=E7=94=9F=E6=80=81?= =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E7=AB=AF=E7=9C=8B=E6=9D=BF=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=AF=B9=E9=BD=90+=E5=BE=A1=E5=92=8C=E6=B3=B0=E9=94=80?= =?UTF-8?q?=E5=94=AE=E9=A2=84=E8=AD=A6=E6=98=8E=E7=BB=86=E3=80=81=E6=96=B0?= =?UTF-8?q?=E9=9B=B6=E5=94=AE=E8=AE=A2=E5=8D=95=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 | 2 + finereport/kanban/mobile/创新生态_mobile.sql | 267 +++++++++++++++++- .../6_innovation/御和泰销售预警明细.sql | 63 +++++ .../xiazuan/6_innovation/新零售订单明细.sql | 65 +++++ 4 files changed, 396 insertions(+), 1 deletion(-) create mode 100644 finereport/xiazuan/6_innovation/御和泰销售预警明细.sql create mode 100644 finereport/xiazuan/6_innovation/新零售订单明细.sql diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index f5426ad..ca23ea7 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -12,6 +12,7 @@ + @@ -32,6 +33,7 @@ + \ No newline at end of file diff --git a/finereport/kanban/mobile/创新生态_mobile.sql b/finereport/kanban/mobile/创新生态_mobile.sql index 27c1191..6c5c79e 100644 --- a/finereport/kanban/mobile/创新生态_mobile.sql +++ b/finereport/kanban/mobile/创新生态_mobile.sql @@ -188,4 +188,269 @@ FROM T1 SELECT CONCAT(assessment_occupany_rate,'%') AS 完成率 FROM dws_point_occupancy_rate_summary_all -WHERE ym = '${REPLACE(p_ym,"-","")}' \ No newline at end of file +WHERE ym = '${REPLACE(p_ym,"-","")}' + + + + +-- ====================================== +-- report_1_空间运营_new +-- ====================================== + +SELECT + organ_name + ,assessment_occupany_rate AS 出租率 + ,total_occupany_rate + ,ROW_NUMBER() OVER (ORDER BY assessment_occupany_rate ${IF(p_kj = "低于50%","ASC","DESC")}) AS 序号 + +FROM + ( + SELECT + + ${IF(LEN(p_area)>0,"comm_name", "organ_name")} AS organ_name + ,assessment_occupany_rate AS assessment_occupany_rate + ,total_occupany_rate as total_occupany_rate + FROM dw.dws_point_occupancy_rate_summary_project + WHERE 1=1 + AND assessment_occupany_rate IS NOT NULL + AND ym = DATE_FORMAT(CURDATE(),'%Y%m') + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + )T +ORDER BY assessment_occupany_rate ${IF(p_kj = "低于50%","ASC","DESC")} +LIMIT 5 + + + +-- ====================================== +-- 新零售 +-- ====================================== + +SELECT + T1.organ_comm_name AS organ_name + ,T1.FINISH_RATE AS 销售完成率 + ,T1.sale_target / 10000 AS sale_target + ,T1.sale_amt / 10000 AS sale_amt + ,ROW_NUMBER() OVER (ORDER BY T1.FINISH_RATE ${IF(p_xls = "低于50%","ASC","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,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + GROUP BY + ${IF(LEN(p_area)>0,"B.comm_name", "B.organ_name")} + )T1 +ORDER BY T1.FINISH_RATE ${IF(p_xls = "低于50%","ASC","DESC")} +LIMIT 5 + + +-- ====================================== +-- 小悦到家 +-- ====================================== +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 ${IF(p_xydj = "低于50%","ASC","DESC")}) AS 序号 +FROM + ( + SELECT + ${IF(LEN(p_area)>0,"A.comm_name", "A.organ_name")} AS organ_comm_name + ,SUM(B.sale_target) AS sale_target + ,SUM(A.sale_amt) + SUM(B.sale_fact) AS sale_amt + ,CASE WHEN SUM(B.sale_target) = 0 THEN 0 + ELSE IFNULL((SUM(A.sale_amt) + SUM(B.sale_fact)) / SUM(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 xydj_amt end) sale_amt -- 202406填报数据为线下+线下,所以不取线上数据 + from dws_innoveco_new_retail_m + where create_ym = '${REPLACE(p_ym,"-","")}' + group by + organ_code + ,organ_name + ,comm_id + ,comm_name + )A + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,SUM(IFNULL(index_xiaoyuedj_target,0)) AS sale_target + ,SUM(index_xiaoyuedj_fact) AS sale_fact + FROM 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 A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + GROUP BY + ${IF(LEN(p_area)>0,"A.comm_name", "A.organ_name")} + )T1 +ORDER BY T1.FINISH_RATE ${IF(p_xydj = "低于50%","ASC","DESC")} +LIMIT 5 +; + +-- ====================================== +-- 御和泰 +-- ====================================== +SELECT + T1.organ_comm_name AS organ_name + ,T1.FINISH_RATE AS 销售完成率 + ,T1.sale_target / 10000 AS sale_target + ,T1.sale_amt / 10000 AS sale_amt + ,ROW_NUMBER() OVER (ORDER BY T1.FINISH_RATE ${IF(p_yht = "低于50%","ASC","DESC")}) AS 序号 +FROM + ( + SELECT + + ${IF(LEN(p_area)>0,"A.comm_name", "A.organ_name")} AS organ_comm_name + ,SUM(B.sale_target) AS sale_target + ,IFNULL(SUM(A.sale_amt) + SUM(B.sale_fact),0) AS sale_amt + ,CASE WHEN SUM(B.sale_target) = 0 THEN 0 + ELSE IFNULL(SUM(A.sale_amt) + SUM(B.sale_fact),0) / SUM(B.sale_target) END AS FINISH_RATE + FROM + ( + select + organ_code + ,organ_name + ,comm_id + ,comm_name + ,sum(case when create_ym = '202406' then 0 else yht_amt end) sale_amt -- 202406填报数据为线下+线下,所以不取线上数据 + from dws_innoveco_new_retail_m + where create_ym = '${REPLACE(p_ym,"-","")}' + group by + organ_code + ,organ_name + ,comm_id + ,comm_name + )A + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,SUM(IFNULL(index_yuhetai_target,0))*10000 AS sale_target + ,SUM(index_yuhetai_fact)*10000 AS sale_fact + FROM 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 A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + GROUP BY + ${IF(LEN(p_area)>0,"A.comm_name", "A.organ_name")} + )T1 +ORDER BY T1.FINISH_RATE ${IF(p_yht = "低于50%","ASC","DESC")} +LIMIT 5 + + + +WITH T1 AS ( + select + organ_code, + organ_name, + sum(yht_amt)/10000 sale_amt + from dws_innoveco_new_retail_m + where create_ym = '${REPLACE(p_ym,"-","")}' + group by organ_code,organ_name +),T2 AS ( + SELECT + organ_code,organ_name, + SUM(IFNULL(index_yuhetai_target,0)) AS sale_target, + SUM(index_xiaoyuedj_fact) AS sale_fact + FROM ods_innoveco_offlinesales + WHERE `year_month` = '${REPLACE(p_ym,"-","")}' + GROUP BY organ_code,organ_name +),T3 AS ( + SELECT + T1.organ_code, + T1.organ_name, + T2.sale_target, + (T1.sale_amt + T2.sale_fact) AS sale_amt, + IFNULL((T1.sale_amt + T2.sale_fact) / T2.sale_target,0) AS 销售完成率 + FROM T1 LEFT JOIN T2 ON T1.organ_code = T2.organ_code +) +SELECT + ROW_NUMBER() OVER (ORDER BY 销售完成率 ${IF(p_yht = "低于50%","ASC","DESC")}) AS 序号, + organ_code, + organ_name, + sale_target, + sale_amt, + 销售完成率 +FROM T3 +WHERE 1=1 + ${IF(p_yht = "低于50%","AND 销售完成率 <= 0.5","AND 销售完成率 >= 0.5")} +ORDER BY 销售完成率 ${IF(p_yht = "低于50%","ASC","DESC")} \ No newline at end of file diff --git a/finereport/xiazuan/6_innovation/御和泰销售预警明细.sql b/finereport/xiazuan/6_innovation/御和泰销售预警明细.sql new file mode 100644 index 0000000..8e0c5ea --- /dev/null +++ b/finereport/xiazuan/6_innovation/御和泰销售预警明细.sql @@ -0,0 +1,63 @@ +-- 【1_report_御和泰销售情况】 + + +SELECT + T1.organ_name AS ORGAN_NAME + ,T1.comm_name AS COMM_NAME + ,T1.FINISH_RATE AS FINISH_RATE + ,T1.sale_target AS SALE_TARGET + ,T1.sale_amt AS SALE_AMT + ,ROW_NUMBER() OVER (ORDER BY T1.FINISH_RATE DESC) AS RK +FROM + ( + SELECT + + A.comm_name + ,A.organ_name + ,SUM(B.sale_target) AS sale_target + ,IFNULL(SUM(A.sale_amt) + SUM(B.sale_fact),0) AS sale_amt + ,CASE WHEN SUM(B.sale_target) = 0 THEN 0 + ELSE IFNULL(SUM(A.sale_amt) + SUM(B.sale_fact),0) / SUM(B.sale_target) END AS FINISH_RATE + FROM + ( + select + organ_code + ,organ_name + ,comm_id + ,comm_name + ,sum(case when create_ym = '202406' then 0 else yht_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 + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,SUM(IFNULL(index_yuhetai_target,0))*10000 AS sale_target + ,SUM(index_yuhetai_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 A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + GROUP BY + A.comm_name + ,A.organ_name + )T1 + diff --git a/finereport/xiazuan/6_innovation/新零售订单明细.sql b/finereport/xiazuan/6_innovation/新零售订单明细.sql new file mode 100644 index 0000000..c3d5fcd --- /dev/null +++ b/finereport/xiazuan/6_innovation/新零售订单明细.sql @@ -0,0 +1,65 @@ +-- ====================================== +-- 1_report_新零售订单明细 +-- ====================================== + +SELECT + T3.organ_code AS organ_code + ,T3.organ_name AS organ_name + ,T3.comm_id AS comm_id + ,T3.comm_name AS comm_name + ,T2.categoryLevel1 AS categoryLevel1-- 品类名称 + ,T2.goodsTitle AS goodsTitle -- 商品名称 + ,substr(T1.createTime,1,10) AS createTime -- 创建时间 + ,COUNT(T1.orderNo) AS orderNum -- 订单数量 + ,SUM(IFNULL(T1.salePrice,0)) - SUM(IFNULL(T1.refundCash,0)) AS AMOUNT-- 金额 + ,ROW_NUMBER() over (ORDER BY COUNT(T1.orderNo)) AS RK +FROM +( + SELECT + orderNo -- 订单号 + ,vid + ,vidName -- 项目名称 + ,salePrice -- 销售价格 + ,refundCash -- 退款金额 + ,createTime -- 创建时间 + FROM dw.dwd_innoveco_order_info_d -- 订单信息 + WHERE 1=1 + ${IF(LEN(p_startdate)>0,"AND createTime LIKE '"+FORMAT(p_startdate,"yyyy-MM")+"%'","")} + +)T1 +LEFT JOIN +( + SELECT + categoryLevel1 -- 品类名称 + ,skuNum -- 商品数量 + ,orderNo -- 订单号 + ,goodsTitle -- 商品名称 + FROM dw.dwd_innoveco_order_item_d -- 订单项信息 +)T2 +ON T1.orderNo = T2.orderNo +RIGHT JOIN +( + SELECT + -- DISTINCT + organ_code + , organ_name + , comm_id + , comm_name + , weim_comm_id + FROM dw.dim_organ_mapping +)T3 +ON T1.vid = T3.weim_comm_id +WHERE T3.comm_id IS NOT NULL +AND T1.createTime is not null +${IF(LEN(p_cate)>0," AND T2.categoryLevel1 IN ('"+JOINARRAY(p_cate,"','")+"')", "")} +${IF(LEN(p_good)>0," AND T2.goodsTitle IN ('"+JOINARRAY(p_good,"','")+"')", "")} +${IF(LEN(p_area)>0," AND T3.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +${if(left(fine_role,2)=="项目","and T3.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +GROUP BY +T3.organ_code +,T3.organ_name +,T3.comm_id +,T3.comm_name +,T2.categoryLevel1 +,T2.goodsTitle +,substr(T1.createTime,1,10) From d589dc4829fe1aecbfebabe61f7acf87af362224 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Wed, 7 Aug 2024 18:28:53 +0800 Subject: [PATCH 11/89] =?UTF-8?q?=E7=A9=BA=E9=97=B4=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E5=87=BA=E7=A7=9F=E7=8E=87=E6=98=8E=E7=BB=86=E8=A1=A8+?= =?UTF-8?q?=E5=A4=9A=E5=BE=84=E5=9B=9E=E6=AC=BE=E6=83=85=E5=86=B5=E3=80=81?= =?UTF-8?q?=E6=AC=A0=E8=B4=B9=E4=B8=8B=E9=92=BB=E6=98=8E=E7=BB=86=E8=A1=A8?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/codeStyles/codeStyleConfig.xml | 5 + .idea/sqldialects.xml | 2 + .../6_innovation/7_空间运营出租率明细.sql | 83 ++++++++++++++++ .../xiazuan/6_innovation/9_多径回款情况.sql | 95 +++++++++++++++++++ 4 files changed, 185 insertions(+) create mode 100644 .idea/codeStyles/codeStyleConfig.xml create mode 100644 finereport/xiazuan/6_innovation/7_空间运营出租率明细.sql create mode 100644 finereport/xiazuan/6_innovation/9_多径回款情况.sql diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..a55e7a1 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index ca23ea7..ad36fff 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -33,6 +33,8 @@ + + diff --git a/finereport/xiazuan/6_innovation/7_空间运营出租率明细.sql b/finereport/xiazuan/6_innovation/7_空间运营出租率明细.sql new file mode 100644 index 0000000..4197d10 --- /dev/null +++ b/finereport/xiazuan/6_innovation/7_空间运营出租率明细.sql @@ -0,0 +1,83 @@ +-- 【1_report_空间运营出租率明细】 +SELECT + ${IF(LEN(p_area)>0,"A.comm_name", "A.organ_name")} AS NAME + ,SUM(A.POINT_NUM ) AS POINT_NUM -- 点位数量 + ,SUM(B.point_num_total ) AS point_num_total-- 总点位数 + ,SUM(A.IS_ADD ) AS add_point_num -- 新增点位数 + ,SUM(B.point_num_valid ) AS point_num_valid -- 有效点位数 + ,SUM(B.point_num_invalid ) AS point_num_invalid -- 无效点位数 + ,SUM(B.point_num_rent ) AS point_num_rent -- 出租点位数 + ,SUM(A.Price ) AS Price -- 单价 + ,CASE WHEN SUM(B.point_num_total ) = 0 THEN 0 + ELSE SUM(B.point_num_valid ) / SUM(B.point_num_total ) END AS point_rent_rate -- 考核出租率 +FROM +( + SELECT + A2.organ_code AS organ_code -- 片区ID + ,A2.organ_name AS organ_name -- 片区名称 + ,A1.CommID AS CommID -- 项目id + ,A2.comm_name AS comm_name -- 项目名称 + ,A1.IS_ADD AS IS_ADD + ,A1.POINT_NUM AS POINT_NUM + ,A1.New_Price AS New_Price + ,A1.New_Price / A1.POINT_NUM AS Price + FROM + ( + SELECT + CommID -- 项目id + ,SUM(CASE WHEN PriceUnit like '%月%' THEN IFNULL(Price,0) * 12 ELSE IFNULL(Price,0) END) AS New_Price + ,SUM(CASE WHEN AddTime >= DATE_ADD(LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)), INTERVAL 1 DAY) THEN 1 + ELSE 0 END) AS IS_ADD + -- ,SUM(CASE WHEN AddTime >= CONCAT('${p_ym}','-01') THEN 1 + -- ELSE 0 END) AS IS_ADD + ,count(1) AS POINT_NUM -- 点位数量 + FROM dw.dim_innoveco_space_point_d -- 创新生态空间点位 + GROUP BY + CommID + )A1 + LEFT JOIN + ( + SELECT + comm_id + ,comm_name + ,organ_code + ,organ_name + FROM dw.dim_organ_mapping + GROUP BY + comm_id + ,comm_name + ,organ_code + ,organ_name + )A2 + -- ON A1.OrganCode = A2.organ_code + ON A1.CommID = A2.comm_id +)A +LEFT JOIN +( + SELECT + organ_code -- 片区ID + ,organ_name -- 片区名称 + ,comm_id -- 项目ID + ,comm_name -- 项目名称 + -- ,usestate -- 项目状态 + -- ,point_type -- 点位类型 + ,SUM(IFNULL(point_num_total ,0)) AS point_num_total -- 总点位数 + ,SUM(IFNULL(point_num_ismustdo ,0)) AS point_num_ismustdo -- 必做点位数 + ,SUM(IFNULL(point_num_zengzhi ,0)) AS point_num_zengzhi -- 增值点位数 + ,SUM(IFNULL(point_num_valid ,0)) AS point_num_valid -- 有效点位数 + ,SUM(IFNULL(point_num_invalid ,0)) AS point_num_invalid -- 无效点位数 + ,SUM(IF(usestate='使用',IFNULL(point_num_total,0),0)) AS point_num_rent -- 出租点位数 + FROM dw.dws_innoveco_point_summary -- 有效点位 + GROUP BY + organ_code -- 片区ID + ,organ_name -- 片区名称 + ,comm_id -- 项目ID + ,comm_name -- 项目名称 +)B +ON A.CommID = B.comm_id +AND A.organ_code = B.organ_code +WHERE B.comm_id IS NOT NULL +${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +${if(left(fine_role,2)=="项目","and A.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +GROUP BY +${IF(LEN(p_area)>0,"A.comm_name", "A.organ_name")} \ No newline at end of file diff --git a/finereport/xiazuan/6_innovation/9_多径回款情况.sql b/finereport/xiazuan/6_innovation/9_多径回款情况.sql new file mode 100644 index 0000000..bbb8066 --- /dev/null +++ b/finereport/xiazuan/6_innovation/9_多径回款情况.sql @@ -0,0 +1,95 @@ +-- 【1_report_多径回款情况】 + + +SELECT + business_code -- 业务域code + ,organ_code -- erp片区code + ,organ_name -- erp片区名称 + ,comm_id -- 项目id + ,comm_name -- 项目名称 + ,index_type -- 多经类别(社商/ 新零售、美居、附属资源/ 空间运营、资产运营/ 资产租售) + ,index_receivable -- 应收值 + ,index_receipts -- 实收值 + ,index_not_receipts -- 未回款数 + ,collection_rate -- 回款率 +FROM dw.ods_caiwu_profit +WHERE (index_receivable <> 0 OR index_receipts <> 0 OR index_not_receipts <> 0) + AND `year_month` = '${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_type)>0," AND index_type IN ('"+JOINARRAY(p_type,"','")+"')", "")} + + +-- 【2_业务条线】 +SELECT + DISTINCT + index_type +FROM dw.ods_caiwu_profit +; + +-- 【1_report_欠费下钻明细】 +SELECT + A.OrganCode AS OrganCode -- 片区编码 +,A.OrganName AS OrganName -- 片区名称 +,A.CommID AS CommID -- 项目id +,A.CommName AS CommName -- 项目名称 +,A.CustName AS CustName -- 客户姓名 商户 +,SUM(A.recev_amount) AS recev_amount-- 应收金额 +,A.AccountsDueDate AS AccountsDueDate -- 应收日期 +,SUM(A.paid_amount) AS paid_amount -- 实收金额 回款金额 +,SUM(A.recev_amount) - SUM(A.paid_amount) AS Arrears_amount -- 欠费金额 +,IF(SUM(A.recev_amount) = 0,0,SUM(A.paid_amount) /SUM(A.recev_amount)) AS PAID_AMOUNT_RATE +FROM +( + SELECT + OrganCode -- 片区编码 + ,OrganName -- 片区名称 + ,CommID -- 项目id + ,CommName -- 项目名称 + ,CustName -- 客户姓名 商户 + ,SUBSTR(AccountsDueDate,1,10) AS AccountsDueDate -- 应收日期 + ,CorpCostID + ,CASE WHEN BussType IN('新增','删除') THEN DealAmount ELSE 0 END AS recev_amount -- 应收金额 + ,CASE WHEN BussType IN('实收','撤销实收') THEN DealAmount ELSE 0 END AS paid_amount -- 实收金额 + FROM dw.ods_erp_tb_hspr_feesserial_${p_comm_id}_d + WHERE left(AccountsDueDate,7) = '${p_ym}' + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +)A +JOIN +( + SELECT + a.CorpCostID + ,a.CostName + FROM + ( + select + CorpCostID + ,CostCode + ,CostName + from dw.dim_corp_cost_item_d -- 总部费用科目 + where length(CostCode) != 4 + ) a + left join + ( + select + CorpCostID + ,CostCode + from dim_corp_cost_item_d + where length(CostCode) = 4 + ) b + on left(a.CostCode,4) = b.CostCode + where b.CostCode = '0007' +)B +ON A.CorpCostID = B.CorpCostID +GROUP BY +A.OrganCode +,A.OrganName +,A.CommID +,A.CommName +,A.CustName +,A.AccountsDueDate + + + + From ceafd27d0f1694991a4a6a57d9d7ffef4932eab6 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Fri, 9 Aug 2024 09:10:43 +0800 Subject: [PATCH 12/89] =?UTF-8?q?=E6=8C=87=E6=A0=87=E9=A2=84=E8=AD=A6?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=98=8E=E7=BB=86=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 | 1 + .../EARLY_WARNING/看板数据预警-项目维度.sql | 236 ++++++++++++++++++ finereport/xiazuan/3_property/4_投诉明细.sql | 1 + 3 files changed, 238 insertions(+) create mode 100644 finereport/tianbao/EARLY_WARNING/看板数据预警-项目维度.sql diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index ad36fff..2ae5611 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -27,6 +27,7 @@ + diff --git a/finereport/tianbao/EARLY_WARNING/看板数据预警-项目维度.sql b/finereport/tianbao/EARLY_WARNING/看板数据预警-项目维度.sql new file mode 100644 index 0000000..09b8c01 --- /dev/null +++ b/finereport/tianbao/EARLY_WARNING/看板数据预警-项目维度.sql @@ -0,0 +1,236 @@ +-- ***************************** +-- 创建人员: 杨坤安 +-- 创建时间: 2024-08-08 +-- 功能描述: 看板数据预警-项目维度 +-- ***************************** + + +-- ------------------------------- +-- 财务 +-- ------------------------------- + + + + +-- ------------------------------- +-- 运营 +-- ------------------------------- + +SELECT +'运营' AS BUSINESS_TYPE -- 业务类型 +,organ_name AS ORGAN_NAME -- 片区名称 +,comm_name AS COMM_NAME -- 项目名称 +,'接房率低于80%的项目' AS INDICATOR_TYPE -- 指标类型 +,accept_num / room_num AS ACCEPT_NUM_RATE -- 接房率 +FROM dw.dws_operation_room_park_info_d +where accept_num / room_num < 0.8 +and comm_name not like '%案场%' and comm_name not like '%撤%' +UNION ALL +SELECT +'运营' AS BUSINESS_TYPE -- 业务类型 +,c.organ_name AS ORGAN_NAME -- 片区名称 +,c.comm_name AS COMM_NAME -- 项目名称 +,'计划即将到期项目' AS INDICATOR_TYPE -- 指标类型 +,count(1) AS PLAN_NUM -- 计划即将到期数量 +FROM +( + SELECT + a.plan_level, + jt.responsible_person1 , + a.id, + a.plan_status, + a.input_date, + a.end_date + FROM dwd_operations_plan_info_d a, + JSON_TABLE + ( + cast( CONCAT( '["', REPLACE ( responsible_person1, ',', '","' ), '"]' ) AS json ), + "$[*]" COLUMNS ( responsible_person1 INT PATH "$" ) + ) AS jt + where a.end_date > date_format(CURDATE() - INTERVAL 3 day,'%Y-%m-%d') + and a.end_date <= date_format(CURDATE(),'%Y-%m-%d') +) a +left join dw.ods_oa_hrmresource_d b +on a.responsible_person1 = b.id +left join +( + select + distinct organ_code + ,organ_name + ,comm_id + ,comm_name + ,oa_comm_id + from dim_organ_mapping where comm_id is not null +)c +on b.subcompanyid1 = c.oa_comm_id +GROUP BY c.organ_name, c.comm_name +UNION ALL +select +'运营' AS BUSINESS_TYPE -- 业务类型 +,organ_name AS ORGAN_NAME -- 片区名称 +,comm_name AS COMM_NAME -- 项目名称 +,'权责亏损项目-填报' AS INDICATOR_TYPE -- 指标类型 +,count(1) AS PROJECT_NUM -- 权责亏损项目数 +from ods_caiwu_feecollection +where yr_month = '2024-06' +and category = '物业' +and index_profit_fact < 0 +GROUP BY organ_name, comm_name +UNION ALL +-- ------------------------------- +-- 物业 +-- ------------------------------- +select +'物业' AS BUSINESS_TYPE -- 业务类型 +,organ_name AS ORGAN_NAME -- 片区名称 +,comm_name AS COMM_NAME -- 项目名称 +,'物业费实收总额(万元)' AS INDICATOR_TYPE -- 指标类型 +,sum(ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0)- ifnull(cu_offset_pr_amt,0) - ifnull(cu_paid_pr_amt,0))/10000 paid_amt +from dw.dwd_finance_fees_serial_d +where ParentCostCode = '0001' and left(ym,7) = left(CURRENT_DATE(),7) -- 当前月 +and organ_name not in ('东湖商管','领悦总部','演示机构') +GROUP BY organ_name, comm_name +UNION ALL +select +'物业' AS BUSINESS_TYPE -- 业务类型 +,organ_name AS ORGAN_NAME -- 片区名称 +,comm_name AS COMM_NAME -- 项目名称 +,'物业费收缴率' AS INDICATOR_TYPE -- 指标类型 +,sum(ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0)+(- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum(ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0)+ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0)) collection_rate +from dwd_finance_fees_serial_d +where ParentCostCode = '0001' +AND left(ym,7) = left(CURRENT_DATE(),7) -- 当前月 +GROUP BY organ_name, comm_name +UNION ALL +-- TODO +SELECT +'物业' AS BUSINESS_TYPE -- 业务类型 +,'' AS ORGAN_NAME -- 片区名称 +,'' AS COMM_NAME -- 项目名称 +,'案场服务费当期收缴率' AS INDICATOR_TYPE -- 指标类型 +,0 AS VALUE +FROM dual +UNION ALL +SELECT +'物业' AS BUSINESS_TYPE -- 业务类型 +,organ_name AS ORGAN_NAME -- 片区名称 +,comm_name AS COMM_NAME -- 项目名称 +,'投诉关闭率' AS INDICATOR_TYPE -- 指标类型 +, sum(tousu_close_incident_num) / sum(tousu_incident_num) AS tousu_close_rate +FROM dws_estate_incident_info_m +where incident_ym = replace(left(CURRENT_DATE(),7),'-','') +group BY organ_name, comm_name +UNION ALL +SELECT +'物业' AS BUSINESS_TYPE -- 业务类型 +,organ_name AS ORGAN_NAME -- 片区名称 +,comm_name AS COMM_NAME -- 项目名称 +,'报事关闭率' AS INDICATOR_TYPE -- 指标类型 +, sum(completed_incident_num - completed_not_close_incident_num) / sum(incident_num) AS close_rate +FROM dws_estate_incident_info_m +where incident_ym = replace(left(CURRENT_DATE(),7),'-','') +group BY organ_name, comm_name +UNION ALL + +-- ------------------------------- +-- 工程 +-- ------------------------------- + +SELECT +'工程' AS BUSINESS_TYPE -- 业务类型 + ,organ_name AS ORGAN_NAME -- 片区名称 +,comm_name AS COMM_NAME -- 项目名称 +,'水电收缴率' AS INDICATOR_TYPE -- 指标类型 +,sum((ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0))+(- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum((ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0))+(ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0))) collection_rate +from dwd_finance_fees_serial_d +where ParentCostCode = '0008' and MiddleCostCode in ('00080001','00080002','00080003','00080004','00080005','00080006','00080007','00080008','00080017','00080018','00080019','00080022','00080023','00080024','00080027','00080028','00080032','00080035') +and ym = left(CURRENT_DATE(),7) +GROUP BY organ_name, comm_name +UNION ALL +SELECT +'工程' AS BUSINESS_TYPE -- 业务类型 +,a.organ_name AS ORGAN_NAME -- 片区名称 +,a.comm_name AS COMM_NAME -- 项目名称 +,'停车场启费率-无法计算项目收缴率' AS INDICATOR_TYPE -- 指标类型 +,SUM(case when qifei_cost_num > 0 then 1 else 0 end) / sum(CNT) AS qifei_rate +from +( + select + a.organ_name + ,a.comm_name + ,sum(case when (ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0)) + (ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0)) + (- ifnull(cu_paid_pr_amt,0) + ifnull(cu_offset_pr_amt,0)) + (ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0)) !=0 then 1 else 0 end) qifei_cost_num + ,count(1) over() AS CNT + from + ( + select + distinct + organ_code + ,organ_name + ,comm_id + ,comm_name + from dim_organ_mapping + where comm_id is not null and comm_name not like '%撤场%' and comm_name not like '%案场%' and comm_name not like '%禁用%' and length(comm_id) != 0 + )a + left join + ( + select + * + from dwd_finance_fees_serial_d + where MiddleCostCode in ('00010003','00030001','00030002','00030003','00030004','00030005','00030006','00030007','00030008','00030009','00030010') + and ym = left(CURRENT_DATE(),7) + )b + on a.comm_id = b.commid + group by a.organ_name, a.comm_name +)a +GROUP BY a.organ_name, a.comm_name +UNION ALL +SELECT +'工程' AS BUSINESS_TYPE -- 业务类型 +,organ_name AS ORGAN_NAME -- 片区名称 +,comm_name AS COMM_NAME -- 项目名称 +,'设备设施完好率' AS INDICATOR_TYPE -- 指标类型 +,CASE WHEN sum(equipment_num) = 0 THEN 0 + else sum(good_equipment_num) / sum(equipment_num) END AS good_rate +FROM dws_engine_equipment_in_good_d +GROUP BY organ_name, comm_name +UNION ALL +SELECT +'工程' AS BUSINESS_TYPE -- 业务类型 +,organ_name AS ORGAN_NAME -- 片区名称 +,comm_name AS COMM_NAME -- 项目名称 +,'设备空间巡查完成率' AS INDICATOR_TYPE -- 指标类型 +,CASE WHEN SUM(task_num) = 0 THEN 0 ELSE SUM(task_finish_num) / SUM(task_num) END AS FINISH_RATE +FROM dws_engine_equipment_inspect_task_m +where task_ym = replace(left(CURRENT_DATE(),7),'-','') +GROUP BY organ_name, comm_name +UNION ALL +SELECT +'工程' AS BUSINESS_TYPE -- 业务类型 +,organ_name AS ORGAN_NAME -- 片区名称 +,comm_name AS COMM_NAME -- 项目名称 +,'异常抬杆比例' AS INDICATOR_TYPE -- 指标类型 +,CASE WHEN SUM(carflow) = 0 THEN 0 ELSE SUM(manualOutNum) / SUM(carflow) END AS 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_name, comm_name + +-- ------------------------------- +-- 创新 => 没有项目 +-- ------------------------------- + + + + +UNION ALL +-- ------------------------------- +-- 商业 +-- ------------------------------- + + + + + +-- ------------------------------- +-- 法务 +-- ------------------------------- + diff --git a/finereport/xiazuan/3_property/4_投诉明细.sql b/finereport/xiazuan/3_property/4_投诉明细.sql index 54c13ec..374911f 100644 --- a/finereport/xiazuan/3_property/4_投诉明细.sql +++ b/finereport/xiazuan/3_property/4_投诉明细.sql @@ -16,6 +16,7 @@ FROM ,SUM(IFNULL(tousu_incident_num,0)) AS tousu_incident_num -- 投诉量 FROM dw.dws_estate_incident_info_m where incident_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)+"'","")} GROUP BY organ_code From dd310e4b1a8be6c1c2b59d3b28a30f0915a8f6f0 Mon Sep 17 00:00:00 2001 From: kirito <1056700524@qq.com> Date: Fri, 9 Aug 2024 16:13:03 +0800 Subject: [PATCH 13/89] test --- dw/dwd/dwd_law_owed_info_d.sql | 66 ++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 31 deletions(-) diff --git a/dw/dwd/dwd_law_owed_info_d.sql b/dw/dwd/dwd_law_owed_info_d.sql index b2adb7c..264d385 100644 --- a/dw/dwd/dwd_law_owed_info_d.sql +++ b/dw/dwd/dwd_law_owed_info_d.sql @@ -1,33 +1,37 @@ select - a.id - , a.zt status_id -- 状态id - , case when a.zt = 0 then '正常' - when a.zt = 1 then '待移交' - when a.zt = 2 then '不移交' - when a.zt = 3 then '不移交申请中' - when a.zt = 4 then '非诉移交中' - when a.zt = 5 then '诉讼移交中' - when a.zt = 6 then '待诉讼处理' - when a.zt = 7 then '待非诉处理' - when a.zt = 8 then '催收中' - when a.zt = 9 then '完结' - when a.zt = 10 then '终本' - when a.zt = 11 then '强制退回中' - end status_name -- 状态名称 - , a.kxmc payment_name -- 款项名称 - , a.sszy belong_resource -- 所属资源 - , a.ssxm project_id -- 项目id - , b.xmmc project_name -- 项目名称 - , d.pqbm district_code -- 片区id - , d.pqmc district_name -- 片区名称 - , a.fyrq fee_date -- 费用日期 - , a.qfje owed_amt -- 欠费金额 - , a.yjje trans_amt -- 移交金额 - , b.xmbm project_code -- 项目编码 + a.id +, a.zt status_id -- 状态id +, case when a.zt = 0 then '正常' + when a.zt = 1 then '待移交' + when a.zt = 2 then '不移交' + when a.zt = 3 then '不移交申请中' + when a.zt = 4 then '非诉移交中' + when a.zt = 5 then '诉讼移交中' + when a.zt = 6 then '待诉讼处理' + when a.zt = 7 then '待非诉处理' + when a.zt = 8 then '催收中' + when a.zt = 9 then '完结' + when a.zt = 10 then '终本' + when a.zt = 11 then '强制退回中' + end status_name -- 状态名称 +, a.kxmc payment_name -- 款项名称 +, a.sszy belong_resource -- 所属资源 +, a.ssxm project_id -- 项目id +, b.xmmc project_name -- 项目名称 +, d.pqbm district_code -- 片区id +, d.pqmc district_name -- 片区名称 +, a.fyrq fee_date -- 费用日期 +, a.qfje owed_amt -- 欠费金额 +, a.yjje trans_amt -- 移交金额 +, b.xmbm project_code -- 项目编码 +, a.skje collect_amt -- 收款金额 +, a.fylx cost_type -- 费用类型 +, a.fymc cost_name -- 费用名称 +, a.hzls collect_unit -- 催收单位 from ods_oa_uf_wy_qf_d a - left join (select id, xmmc, xmbm from ods_oa_uf_wy_xm_d) b -- 项目 - on a.ssxm = b.id - left join (select id, left(pqbm,4) pqbm from ods_oa_uf_wy_pq_d where length(pqbm)=6) c -- 地区 - on a.sspq = c.id - left join (select pqbm, pqmc from ods_oa_uf_wy_pq_d where length(pqbm)=4) d -- 片区 - on c.pqbm = d.pqbm \ No newline at end of file +left join (select id, xmmc, xmbm from ods_oa_uf_wy_xm_d) b -- 项目 +on a.ssxm = b.id +left join (select id, left(pqbm,4) pqbm from ods_oa_uf_wy_pq_d where length(pqbm)=6) c -- 地区 +on a.sspq = c.id +left join (select pqbm, pqmc from ods_oa_uf_wy_pq_d where length(pqbm)=4) d -- 片区 +on c.pqbm = d.pqbm \ No newline at end of file From 9ec6e25bf9c0908da98a769a523db6a8e60fe375 Mon Sep 17 00:00:00 2001 From: kirito <1056700524@qq.com> Date: Fri, 9 Aug 2024 17:53:14 +0800 Subject: [PATCH 14/89] test --- dw/dim/dim_business_building_d.sql | 40 +++++++++++++++---------- dw/dim/dim_business_contract_type_d.sql | 12 ++++---- dw/dwd/dwd_innoveco_order_info_d.sql | 38 +++++++++++------------ 3 files changed, 49 insertions(+), 41 deletions(-) diff --git a/dw/dim/dim_business_building_d.sql b/dw/dim/dim_business_building_d.sql index afa2a50..d73e38e 100644 --- a/dw/dim/dim_business_building_d.sql +++ b/dw/dim/dim_business_building_d.sql @@ -1,16 +1,24 @@ -select - a.id - , a.project_id -- 项目id - , b.name project_name -- 项目名称 - , a.building_code -- 楼栋代码 - , a.name -- 名称 - , case when a.type = 1 then '集中商业' - when a.type = 2 then '写字楼' - when a.type = 4 then '底商' - when a.type = 5 then '商业街' - end type -- 类型 - , a.construction_area -- 建筑面积 -from ods_bs_building_d a - left join ods_bs_project_d b - on a.project_id = b.id -where a.del_flag = 0 \ No newline at end of file +SELECT + a.id, + a.project_id -- 项目id + ,b.NAME project_name -- 项目名称 + ,a.building_code -- 楼栋代码 + ,a.NAME -- 名称 + , +CASE + WHEN a.type = 1 THEN + '集中商业' + WHEN a.type = 2 THEN + '写字楼' + WHEN a.type = 4 THEN + '底商' + WHEN a.type = 5 THEN + '商业街' + END type -- 类型 + , + a.construction_area -- 建筑面积 +FROM + ods_bs_building_d a + LEFT JOIN ods_bs_project_d b ON a.project_id = b.id +WHERE + a.del_flag = 0 \ No newline at end of file diff --git a/dw/dim/dim_business_contract_type_d.sql b/dw/dim/dim_business_contract_type_d.sql index 11dd67b..94a4945 100644 --- a/dw/dim/dim_business_contract_type_d.sql +++ b/dw/dim/dim_business_contract_type_d.sql @@ -1,7 +1,7 @@ -select +SELECT id - , name -- 类型名称 - , parent_id -- 父id - , code -- 类型代码 -from ods_bs_contract_type_d -where del_flag = 0 \ No newline at end of file + , name -- 类型名称 + , parent_id -- 父id + , code -- 类型代码 +FROM ods_bs_contract_type_d +WHERE del_flag = 0 \ No newline at end of file diff --git a/dw/dwd/dwd_innoveco_order_info_d.sql b/dw/dwd/dwd_innoveco_order_info_d.sql index 530bfd3..6429d1f 100644 --- a/dw/dwd/dwd_innoveco_order_info_d.sql +++ b/dw/dwd/dwd_innoveco_order_info_d.sql @@ -1,24 +1,24 @@ select - a.orderNo - , from_unixtime(cast(left(a.createTime,10) as unsigned integer)) createTime -- 创建时间 - , from_unixtime(cast(left(a.confirmTime,10) as unsigned integer)) confirmTime -- 收货时间 - , a.orderStatus -- 订单状态 - , a.vid -- 项目id - , a.vidName -- 项目名称 - , b.salePrice -- 销售金额 - , c.refundCash -- 退款金额 + a.orderNo +, from_unixtime(cast(left(a.createTime,10) as unsigned integer)) createTime -- 创建时间 +, from_unixtime(cast(left(a.confirmTime,10) as unsigned integer)) confirmTime -- 收货时间 +, a.orderStatus -- 订单状态 +, a.vid -- 项目id +, a.vidName -- 项目名称 +, b.salePrice -- 销售金额 +, c.refundCash -- 退款金额 from ods_weimob_order_listsearch_orderinfo_d a - left join ( - select orderNo, sum(salePrice*skuNum) salePrice - from ods_weimob_order_listsearch_orderinfo_items_d - group by orderNo +left join ( + select orderNo, sum(salePrice*skuNum) salePrice + from ods_weimob_order_listsearch_orderinfo_items_d + group by orderNo ) b - on a.orderNo = b.orderNo - left join ( - select orderNo, sum(refundCash) refundCash - from ods_weimob_rights_list_d - where rightsstatus = '6' - group by orderNo +on a.orderNo = b.orderNo +left join ( + select orderNo, sum(refundCash) refundCash + from ods_weimob_rights_list_d + where rightsstatus = '6' + group by orderNo ) c - on a.orderNo = c.orderNo +on a.orderNo = c.orderNo where a.isDeleted = 0 and a.orderStatus != 9 \ No newline at end of file From 0feb60b63a6b1241554f4d59856d2118ba7dfa36 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Fri, 9 Aug 2024 18:23:29 +0800 Subject: [PATCH 15/89] =?UTF-8?q?=E7=89=A9=E4=B8=9A=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 1 + finereport/kanban/mobile/物业_mobile.sql | 44 ++++++++++++++++++++++++ 看板上线后修改记录-杨坤安.md | 16 +++++++++ 3 files changed, 61 insertions(+) create mode 100644 看板上线后修改记录-杨坤安.md diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 2ae5611..d31dbf8 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -22,6 +22,7 @@ + diff --git a/finereport/kanban/mobile/物业_mobile.sql b/finereport/kanban/mobile/物业_mobile.sql index e69de29..fd788a9 100644 --- a/finereport/kanban/mobile/物业_mobile.sql +++ b/finereport/kanban/mobile/物业_mobile.sql @@ -0,0 +1,44 @@ +-- 【月报事率】 +select + incident_ym + , sum(response_timely_incident_num) / sum(incident_num) response_timely_rate + , sum(completed_incident_num) / sum(incident_num) completed_rate + , sum(completed_incident_num - completed_not_close_incident_num) / sum(incident_num) close_rate + , sum(follow_up_incident_num) / sum(incident_num) follow_up_rate + , sum(delay_incident_num) / sum(incident_num) delay_rate + , sum(delay_incident_num) delay_incident_num + , sum(follow_up_satisfied_incident_num) / sum(follow_up_incident_num) follow_up_satisfied_rate + , sum(follow_up_evaluate_incident_num) / sum(follow_up_incident_num) follow_up_satisfied_rate1 -- + + -- 回访满意量 / -- 回访量 + , sum(tousu_close_incident_num) / sum(tousu_incident_num) tousu_close_rate + , sum(tousu_incident_num) tousu_incident_num +FROM dws_estate_incident_info_m +where left(incident_ym,4) = '${left(p_ym,4)}' + AND incident_ym <> DATE_FORMAT(CURDATE(), '%Y%m') + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +group by incident_ym +order by incident_ym + + + +follow_up_satisfied_rate, EXACT( + incident_ym, + CONCATENATE( + year(TODAY()), -- 当前年 + if( + LEN(month(today())-1) = 1, -- + CONCATENATE("0",month(today())-1), + month(today())-1 + ) + ) + ) + +EXACT(text1,text2):检测两组文本是否相同。如果完全相同,EXACT函数返回TRUE;否则,返回FALSE。EXACT函数可以区分大小写,但忽略格式的不同。同时也可以利用EXACT函数来检测输入文档的文字。 +Text1:需要比较的第一组文本。 +Text2:需要比较的第二组文本。 +示例: +EXACT("Spreadsheet","Spreadsheet")等于TRUE。 +EXACT("Spreadsheet","S preadsheet")等于FALSE。 +EXACT("Spreadsheet","spreadsheet")等于FALSE。 \ No newline at end of file diff --git a/看板上线后修改记录-杨坤安.md b/看板上线后修改记录-杨坤安.md new file mode 100644 index 0000000..2578f41 --- /dev/null +++ b/看板上线后修改记录-杨坤安.md @@ -0,0 +1,16 @@ + + +# 【2024-08-09修改】 + +**物业看板** +- 延期单量想改报事回访评价满意度 【pc、移动已修改完成】 +- 折线图显示标签 【除客满情况未加,其余已加】 +- 收缴率改成按综合收缴率排名【pc、移动端已修改完成】 +- 综合收缴率放最前面【废弃】 +- 显示前3后3【完成】 +- 点击后扩展【完成】 +- 以最后一列排序,最后一列加粗【pc、移动端已修改完成】 +- 投诉按投诉量排名【pc、移动端已修改完成】 +- 报事信息不要 +- 监控筛选条件问题【已完成修改】 +- 监控放大问题【无法处理】 \ No newline at end of file From 40992db513c5f299188619469b8aebaa86efc3cc Mon Sep 17 00:00:00 2001 From: yangkunan Date: Sat, 10 Aug 2024 23:26:29 +0800 Subject: [PATCH 16/89] =?UTF-8?q?=E6=80=BB=E8=A3=81=E5=AF=B9=E5=A4=96?= =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E6=95=B0=E6=8D=AE=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kanban/pc/总裁驾驶舱对外大屏数据集.sql | 1191 +++++++++++++++++ 1 file changed, 1191 insertions(+) create mode 100644 finereport/kanban/pc/总裁驾驶舱对外大屏数据集.sql diff --git a/finereport/kanban/pc/总裁驾驶舱对外大屏数据集.sql b/finereport/kanban/pc/总裁驾驶舱对外大屏数据集.sql new file mode 100644 index 0000000..db91875 --- /dev/null +++ b/finereport/kanban/pc/总裁驾驶舱对外大屏数据集.sql @@ -0,0 +1,1191 @@ +-- ***************************** +-- 创建人员: 杨坤安 +-- 创建时间: 2024-07-31 +-- 功能描述: 总裁驾驶舱对外看板数据初始化脚本 +-- ***************************** +-- 问题: 1. 如果加上片区维度,率值计算要在数据集中进行,需在表中增加基础指标,维护难度较大,所以不加片区+项目维度 + + + +-- ================================================== +-- 常规指标 +-- ================================================== + +DROP TABLE IF EXISTS dw.dws_president_base_index_d; +CREATE TABLE IF NOT EXISTS dw.dws_president_base_index_d ( + id INT AUTO_INCREMENT PRIMARY KEY +,CURRENT_DT VARCHAR(50) COMMENT '当前日期' +,INDEX_INCOME_FACT DECIMAL(12,4) COMMENT '收入' +,INCOME_COMPLETION_RATE DECIMAL(6,4) COMMENT '收入完成率' +,INDEX_COST_FACT DECIMAL(12,4) COMMENT '成本' +,COST_COMPLETION_RATE DECIMAL(6,4) COMMENT '成本完成率' +,INDEX_PROFIT_FACT DECIMAL(12,4) COMMENT '利润' +,PROFIT_COMPLETION_RATE DECIMAL(6,4) COMMENT '利润完成率' +,INDEX_MARKET_FACT DECIMAL(12,4) COMMENT '市拓' +,MARKET_COMPLETION_RATE DECIMAL(6,4) COMMENT '市拓完成率' +,TODAY_TOLL_FEE DECIMAL(12,4) COMMENT '今日收费(单位:万)' +,TYEAR_TOLL_FEE DECIMAL(12,4) COMMENT '年度累计收费(单位:万)' +,MON_TOLL_FEE DECIMAL(12,4) COMMENT '月度累计收费(单位:万)' +,CU_COLLECTION_RATE DECIMAL(6,4) COMMENT '当期收缴率' +,PR_COLLECTION_RATE DECIMAL(6,4) COMMENT '往期收缴率' +,COLLECTION_RATE DECIMAL(6,4) COMMENT '综合收缴率' +,PR_OWED_AMT DECIMAL(12,4) COMMENT '往期欠费金额(单位:万)' +,CU_OWED_AMT DECIMAL(12,4) COMMENT '当期欠费金额(单位:万)' +,ENERGY_CONSUMPTION_AMT DECIMAL(12,4) COMMENT '能耗收费' +,DEVICE_GOOD_RATE DECIMAL(6,4) COMMENT '设备完好率' +,DEVICE_SPACE_NORMAL_RATE DECIMAL(6,4) COMMENT '设备空间巡查完成率' +,NEC INT COMMENT '在职人数' +,FMR DECIMAL(6,4) COMMENT '满编率' +,FMR_TARGET DECIMAL(6,4) COMMENT '满编率目标值' +,TR DECIMAL(6,4) COMMENT '离职率' +,TR_TARGET DECIMAL(6,4) COMMENT '离职率目标值' +,AC_FEE_RATE DECIMAL(6,4) COMMENT '人力成本费率' +,AC_FEE_RATE_TARGET DECIMAL(6,4) COMMENT '人力成本费率目标值' +,ASSESSMENT_OCCUPANY_RATE DECIMAL(6,4) COMMENT '空间运营出租率' +,RETAIL_FINISH_RATE DECIMAL(6,4) COMMENT '新零售完成率' +,RENT_RATE DECIMAL(6,4) COMMENT '商业资产出租率' +,RENT_COLLECTION_RATE DECIMAL(6,4) COMMENT '租金收缴率' +,GUEST_ROOM_FEE DECIMAL(12,4) COMMENT '客房单价(单位:元)' +,GUEST_RENT_RATE DECIMAL(6,4) COMMENT '客房出租率' +)COMMENT = '总裁驾驶舱对外展示基础指标' +; + +TRUNCATE TABLE dw.dws_president_base_index_d + +INSERT INTO dws_president_base_index_d +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'FIN' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'财务' AS BUSINESS_NAME -- 业务类型名称 +,SUM(index_income_fact) AS INDEX_INCOME_FACT -- 收入 +,CASE WHEN SUM(index_income_target) = 0 THEN 0 + ELSE SUM(index_income_fact) / SUM(index_income_target) + END AS INCOME_COMPLETION_RATE -- 收入完成率 +,SUM(index_cost_fact) AS INDEX_COST_FACT -- 成本 +,CASE WHEN SUM(index_cost_target) = 0 THEN 0 + ELSE SUM(index_cost_fact) / SUM(index_cost_target) + END AS COST_COMPLETION_RATE -- 成本完成率 +,SUM(index_profit_fact) AS INDEX_PROFIT_FACT -- 利润 +,CASE WHEN SUM(index_profit_target) = 0 THEN 0 + ELSE SUM(index_profit_fact) / SUM(index_profit_target) + END AS PROFIT_COMPLETION_RATE -- 利润完成率 +,SUM(index_market_fact) AS INDEX_MARKET_FACT -- 市拓 +,CASE WHEN SUM(index_market_target) = 0 THEN 0 + ELSE SUM(index_market_fact) / SUM(index_market_target) + END AS MARKET_COMPLETION_RATE -- 市拓完成率 +,0 AS TODAY_TOLL_FEE -- 今日收费 +,0 AS TYEAR_TOLL_FEE -- 年度累计收费 +,0 AS MON_TOLL_FEE -- 月度累计收费 +,0 AS CU_COLLECTION_RATE -- 当期收缴率 +,0 AS PR_COLLECTION_RATE -- 往期收缴率 +,0 AS COLLECTION_RATE -- 综合收缴率 +,0 AS PR_OWED_AMT -- 往期欠费金额 +,0 AS CU_OWED_AMT -- 当期欠费金额 +,0 AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,0 AS DEVICE_GOOD_RATE -- 设备完好率 +,0 AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,0 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,0 AS RETAIL_FINISH_RATE -- 新零售完成率 +,0 AS RENT_RATE -- 商业资产出租率 +,0 AS RENT_COLLECTION_RATE -- 租金收缴率 +,0 AS GUEST_ROOM_FEE -- 客房单价 +,0 AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.ods_caiwu_feecollection +WHERE yr_month = '2024-06' +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'FIN' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'财务' AS BUSINESS_NAME -- 业务类型名称 +,0 AS INDEX_INCOME_FACT -- 收入 +,0 AS INCOME_COMPLETION_RATE -- 收入完成率 +,0 AS INDEX_COST_FACT -- 成本 +,0 AS COST_COMPLETION_RATE -- 成本完成率 +,0 AS INDEX_PROFIT_FACT -- 利润 +,0 AS PROFIT_COMPLETION_RATE -- 利润完成率 +,0 AS INDEX_MARKET_FACT -- 市拓 +,0 AS MARKET_COMPLETION_RATE -- 市拓完成率 +,sum(pr_paid_amt + cu_paid_amt + fu_paid_amt)/10000 AS TODAY_TOLL_FEE -- 今日收费 +,0 AS TYEAR_TOLL_FEE -- 年度累计收费 +,0 AS MON_TOLL_FEE -- 月度累计收费 +,0 AS CU_COLLECTION_RATE -- 当期收缴率 +,0 AS PR_COLLECTION_RATE -- 往期收缴率 +,0 AS COLLECTION_RATE -- 综合收缴率 +,0 AS PR_OWED_AMT -- 往期欠费金额 +,0 AS CU_OWED_AMT -- 当期欠费金额 +,0 AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,0 AS DEVICE_GOOD_RATE -- 设备完好率 +,0 AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,0 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,0 AS RETAIL_FINISH_RATE -- 新零售完成率 +,0 AS RENT_RATE -- 商业资产出租率 +,0 AS RENT_COLLECTION_RATE -- 租金收缴率 +,0 AS GUEST_ROOM_FEE -- 客房单价 +,0 AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.dws_finance_today_fees_d +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'FIN' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'财务' AS BUSINESS_NAME -- 业务类型名称 +,0 AS INDEX_INCOME_FACT -- 收入 +,0 AS INCOME_COMPLETION_RATE -- 收入完成率 +,0 AS INDEX_COST_FACT -- 成本 +,0 AS COST_COMPLETION_RATE -- 成本完成率 +,0 AS INDEX_PROFIT_FACT -- 利润 +,0 AS PROFIT_COMPLETION_RATE -- 利润完成率 +,0 AS INDEX_MARKET_FACT -- 市拓 +,0 AS MARKET_COMPLETION_RATE -- 市拓完成率 +,0 AS TODAY_TOLL_FEE -- 今日收费 +,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)/10000 + AS TYEAR_TOLL_FEE -- 年度累计收费 +,SUM(case when ym = '2024-07' then (pr_paid_cu_amt + cu_paid_cu_amt + pr_offset_cu_amt + cu_offset_cu_amt - cu_offset_pr_amt - cu_paid_pr_amt) else 0 end) /10000 + AS MON_TOLL_FEE -- 月度累计收费 +,0 AS CU_COLLECTION_RATE -- 当期收缴率 +,0 AS PR_COLLECTION_RATE -- 往期收缴率 +,0 AS COLLECTION_RATE -- 综合收缴率 +,0 AS PR_OWED_AMT -- 往期欠费金额 +,0 AS CU_OWED_AMT -- 当期欠费金额 +,0 AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,0 AS DEVICE_GOOD_RATE -- 设备完好率 +,0 AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,0 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,0 AS RETAIL_FINISH_RATE -- 新零售完成率 +,0 AS RENT_RATE -- 商业资产出租率 +,0 AS RENT_COLLECTION_RATE -- 租金收缴率 +,0 AS GUEST_ROOM_FEE -- 客房单价 +,0 AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.dws_finance_fees_serial_m +WHERE left(ym,4) = '2024' +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'FIN' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'财务' AS BUSINESS_NAME -- 业务类型名称 +,0 AS INDEX_INCOME_FACT -- 收入 +,0 AS INCOME_COMPLETION_RATE -- 收入完成率 +,0 AS INDEX_COST_FACT -- 成本 +,0 AS COST_COMPLETION_RATE -- 成本完成率 +,0 AS INDEX_PROFIT_FACT -- 利润 +,0 AS PROFIT_COMPLETION_RATE -- 利润完成率 +,0 AS INDEX_MARKET_FACT -- 市拓 +,0 AS MARKET_COMPLETION_RATE -- 市拓完成率 +,0 AS TODAY_TOLL_FEE -- 今日收费 +,0 AS TYEAR_TOLL_FEE -- 年度累计收费 +,0 AS MON_TOLL_FEE -- 月度累计收费 +,sum((ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0))) / sum((ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0))) + AS CU_COLLECTION_RATE -- 当期收缴率 +,sum((- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum((ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0))) + AS PR_COLLECTION_RATE -- 往期收缴率 +,sum((ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0))+(- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum((ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0))+(ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0))) + AS COLLECTION_RATE -- 综合收缴率 +,sum((ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0))-(- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0)))/10000 + AS PR_OWED_AMT -- 往期欠费金额 +,sum((ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0))-(ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0)))/10000 + AS CU_OWED_AMT -- 当期欠费金额 +,0 AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,0 AS DEVICE_GOOD_RATE -- 设备完好率 +,0 AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,0 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,0 AS RETAIL_FINISH_RATE -- 新零售完成率 +,0 AS RENT_RATE -- 商业资产出租率 +,0 AS RENT_COLLECTION_RATE -- 租金收缴率 +,0 AS GUEST_ROOM_FEE -- 客房单价 +,0 AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.dwd_finance_fees_serial_d +where ParentCostCode = '0001' and organ_name not in ('东湖商管','领悦总部','演示机构') +and ym = DATE_FORMAT(NOW(),'%Y-%m') +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'ENGINE' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'工程管理' AS BUSINESS_NAME -- 业务类型名称 +,0 AS INDEX_INCOME_FACT -- 收入 +,0 AS INCOME_COMPLETION_RATE -- 收入完成率 +,0 AS INDEX_COST_FACT -- 成本 +,0 AS COST_COMPLETION_RATE -- 成本完成率 +,0 AS INDEX_PROFIT_FACT -- 利润 +,0 AS PROFIT_COMPLETION_RATE -- 利润完成率 +,0 AS INDEX_MARKET_FACT -- 市拓 +,0 AS MARKET_COMPLETION_RATE -- 市拓完成率 +,0 AS TODAY_TOLL_FEE -- 今日收费 +,0 AS TYEAR_TOLL_FEE -- 年度累计收费 +,0 AS MON_TOLL_FEE -- 月度累计收费 +,0 AS CU_COLLECTION_RATE -- 当期收缴率 +,0 AS PR_COLLECTION_RATE -- 往期收缴率 +,0 AS COLLECTION_RATE -- 综合收缴率 +,0 AS PR_OWED_AMT -- 往期欠费金额 +,0 AS CU_OWED_AMT -- 当期欠费金额 +,sum(case when ym = '2024-07' and ParentCostCode = '0008' then (ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0) - ifnull(cu_offset_pr_amt,0) - ifnull(cu_paid_pr_amt,0)) else 0 end) /10000 + AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,0 AS DEVICE_GOOD_RATE -- 设备完好率 +,0 AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,0 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,0 AS RETAIL_FINISH_RATE -- 新零售完成率 +,0 AS RENT_RATE -- 商业资产出租率 +,0 AS RENT_COLLECTION_RATE -- 租金收缴率 +,0 AS GUEST_ROOM_FEE -- 客房单价 +,0 AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.dws_finance_fees_serial_m +WHERE left(ym,4) = '2024' +and organ_name not in ('东湖商管','领悦总部','演示机构') +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'ENGINE' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'工程管理' AS BUSINESS_NAME -- 业务类型名称 +,0 AS INDEX_INCOME_FACT -- 收入 +,0 AS INCOME_COMPLETION_RATE -- 收入完成率 +,0 AS INDEX_COST_FACT -- 成本 +,0 AS COST_COMPLETION_RATE -- 成本完成率 +,0 AS INDEX_PROFIT_FACT -- 利润 +,0 AS PROFIT_COMPLETION_RATE -- 利润完成率 +,0 AS INDEX_MARKET_FACT -- 市拓 +,0 AS MARKET_COMPLETION_RATE -- 市拓完成率 +,0 AS TODAY_TOLL_FEE -- 今日收费 +,0 AS TYEAR_TOLL_FEE -- 年度累计收费 +,0 AS MON_TOLL_FEE -- 月度累计收费 +,0 AS CU_COLLECTION_RATE -- 当期收缴率 +,0 AS PR_COLLECTION_RATE -- 往期收缴率 +,0 AS COLLECTION_RATE -- 综合收缴率 +,0 AS PR_OWED_AMT -- 往期欠费金额 +,0 AS CU_OWED_AMT -- 当期欠费金额 +,0 AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,CASE WHEN sum(equipment_num) = 0 THEN 0 + ELSE sum(good_equipment_num) / sum(equipment_num) + END AS DEVICE_GOOD_RATE -- 设备完好率 +,0 AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,0 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,0 AS RETAIL_FINISH_RATE -- 新零售完成率 +,0 AS RENT_RATE -- 商业资产出租率 +,0 AS RENT_COLLECTION_RATE -- 租金收缴率 +,0 AS GUEST_ROOM_FEE -- 客房单价 +,0 AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.dws_engine_equipment_in_good_d +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'ENGINE' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'工程管理' AS BUSINESS_NAME -- 业务类型名称 +,0 AS INDEX_INCOME_FACT -- 收入 +,0 AS INCOME_COMPLETION_RATE -- 收入完成率 +,0 AS INDEX_COST_FACT -- 成本 +,0 AS COST_COMPLETION_RATE -- 成本完成率 +,0 AS INDEX_PROFIT_FACT -- 利润 +,0 AS PROFIT_COMPLETION_RATE -- 利润完成率 +,0 AS INDEX_MARKET_FACT -- 市拓 +,0 AS MARKET_COMPLETION_RATE -- 市拓完成率 +,0 AS TODAY_TOLL_FEE -- 今日收费 +,0 AS TYEAR_TOLL_FEE -- 年度累计收费 +,0 AS MON_TOLL_FEE -- 月度累计收费 +,0 AS CU_COLLECTION_RATE -- 当期收缴率 +,0 AS PR_COLLECTION_RATE -- 往期收缴率 +,0 AS COLLECTION_RATE -- 综合收缴率 +,0 AS PR_OWED_AMT -- 往期欠费金额 +,0 AS CU_OWED_AMT -- 当期欠费金额 +,0 AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,0 AS DEVICE_GOOD_RATE -- 设备完好率 +,CASE WHEN sum(task_num) = 0 THEN 0 + ELSE SUM(task_finish_num) /sum(task_num) + END AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,0 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,0 AS RETAIL_FINISH_RATE -- 新零售完成率 +,0 AS RENT_RATE -- 商业资产出租率 +,0 AS RENT_COLLECTION_RATE -- 租金收缴率 +,0 AS GUEST_ROOM_FEE -- 客房单价 +,0 AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.dws_engine_equipment_inspect_task_m +WHERE task_ym = date_format(current_date(),'%Y%m') +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'INNOVA' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'创新生态' AS BUSINESS_NAME -- 业务类型名称 +,0 AS INDEX_INCOME_FACT -- 收入 +,0 AS INCOME_COMPLETION_RATE -- 收入完成率 +,0 AS INDEX_COST_FACT -- 成本 +,0 AS COST_COMPLETION_RATE -- 成本完成率 +,0 AS INDEX_PROFIT_FACT -- 利润 +,0 AS PROFIT_COMPLETION_RATE -- 利润完成率 +,0 AS INDEX_MARKET_FACT -- 市拓 +,0 AS MARKET_COMPLETION_RATE -- 市拓完成率 +,0 AS TODAY_TOLL_FEE -- 今日收费 +,0 AS TYEAR_TOLL_FEE -- 年度累计收费 +,0 AS MON_TOLL_FEE -- 月度累计收费 +,0 AS CU_COLLECTION_RATE -- 当期收缴率 +,0 AS PR_COLLECTION_RATE -- 往期收缴率 +,0 AS COLLECTION_RATE -- 综合收缴率 +,0 AS PR_OWED_AMT -- 往期欠费金额 +,0 AS CU_OWED_AMT -- 当期欠费金额 +,0 AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,0 AS DEVICE_GOOD_RATE -- 设备完好率 +,0 AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,assessment_occupany_rate / 100 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,0 AS RETAIL_FINISH_RATE -- 新零售完成率 +,0 AS RENT_RATE -- 商业资产出租率 +,0 AS RENT_COLLECTION_RATE -- 租金收缴率 +,0 AS GUEST_ROOM_FEE -- 客房单价 +,0 AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.dws_point_occupancy_rate_summary_all +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'INNOVA' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'创新生态' AS BUSINESS_NAME -- 业务类型名称 +,0 AS INDEX_INCOME_FACT -- 收入 +,0 AS INCOME_COMPLETION_RATE -- 收入完成率 +,0 AS INDEX_COST_FACT -- 成本 +,0 AS COST_COMPLETION_RATE -- 成本完成率 +,0 AS INDEX_PROFIT_FACT -- 利润 +,0 AS PROFIT_COMPLETION_RATE -- 利润完成率 +,0 AS INDEX_MARKET_FACT -- 市拓 +,0 AS MARKET_COMPLETION_RATE -- 市拓完成率 +,0 AS TODAY_TOLL_FEE -- 今日收费 +,0 AS TYEAR_TOLL_FEE -- 年度累计收费 +,0 AS MON_TOLL_FEE -- 月度累计收费 +,0 AS CU_COLLECTION_RATE -- 当期收缴率 +,0 AS PR_COLLECTION_RATE -- 往期收缴率 +,0 AS COLLECTION_RATE -- 综合收缴率 +,0 AS PR_OWED_AMT -- 往期欠费金额 +,0 AS CU_OWED_AMT -- 当期欠费金额 +,0 AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,0 AS DEVICE_GOOD_RATE -- 设备完好率 +,0 AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,0 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,CASE WHEN SUM(CASE WHEN revenue_type = '创新' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) = 0 THEN 0 + ELSE SUM(CASE WHEN revenue_type = '创新' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) +/ SUM(CASE WHEN revenue_type = '创新' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) + END AS RETAIL_FINISH_RATE -- 新零售完成率 +,0 AS RENT_RATE -- 商业资产出租率 +,0 AS RENT_COLLECTION_RATE -- 租金收缴率 +,0 AS GUEST_ROOM_FEE -- 客房单价 +,0 AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.ods_innoveco_metrics_finish_d +WHERE business_type in('收入','目标') -- 业务类型 +AND YM = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y-%m') -- 2024-06 当前月份的上一月 +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'OTHER' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'其他' AS BUSINESS_NAME -- 业务类型名称 +,0 AS INDEX_INCOME_FACT -- 收入 +,0 AS INCOME_COMPLETION_RATE -- 收入完成率 +,0 AS INDEX_COST_FACT -- 成本 +,0 AS COST_COMPLETION_RATE -- 成本完成率 +,0 AS INDEX_PROFIT_FACT -- 利润 +,0 AS PROFIT_COMPLETION_RATE -- 利润完成率 +,0 AS INDEX_MARKET_FACT -- 市拓 +,0 AS MARKET_COMPLETION_RATE -- 市拓完成率 +,0 AS TODAY_TOLL_FEE -- 今日收费 +,0 AS TYEAR_TOLL_FEE -- 年度累计收费 +,0 AS MON_TOLL_FEE -- 月度累计收费 +,0 AS CU_COLLECTION_RATE -- 当期收缴率 +,0 AS PR_COLLECTION_RATE -- 往期收缴率 +,0 AS COLLECTION_RATE -- 综合收缴率 +,0 AS PR_OWED_AMT -- 往期欠费金额 +,0 AS CU_OWED_AMT -- 当期欠费金额 +,0 AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,0 AS DEVICE_GOOD_RATE -- 设备完好率 +,0 AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,0 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,0 AS RETAIL_FINISH_RATE -- 新零售完成率 +,SUM(T.rentRoomAreaSum) / (SUM(T.rentRoomAreaSum) + SUM(T.notRentRoomAreaSum)) + AS RENT_RATE -- 商业资产出租率 +,0 AS RENT_COLLECTION_RATE -- 租金收缴率 +,0 AS GUEST_ROOM_FEE -- 客房单价 +,0 AS GUEST_RENT_RATE -- 客房出租率 +FROM +( + SELECT + B.`type` + ,SUM(CASE WHEN A.business_status = 1 THEN A.construction_area ELSE 0 END ) AS rentRoomAreaSum -- 出租面积 + ,SUM(CASE WHEN A.business_status != 4 AND A.business_status != 1 THEN A.construction_area ELSE 0 END ) AS notRentRoomAreaSum -- 未出租面积 + FROM + ( + SELECT + id + ,erp_id + ,building_id + ,business_status + ,construction_area -- 建筑面积 + FROM dw.ods_bs_room_d -- 商管房间表 + WHERE del_flag = 0 + AND enable_flag = 0 + AND review_status = 2 + )A + LEFT JOIN + ( + select + id + ,project_id + ,project_name + ,`type` -- 业态 商业街,集中商业,写字楼,底商 + from dim_business_building_d + )B + on A.building_id = B.id + GROUP BY + B.`type` +)T +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'OTHER' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'其他' AS BUSINESS_NAME -- 业务类型名称 +,0 AS INDEX_INCOME_FACT -- 收入 +,0 AS INCOME_COMPLETION_RATE -- 收入完成率 +,0 AS INDEX_COST_FACT -- 成本 +,0 AS COST_COMPLETION_RATE -- 成本完成率 +,0 AS INDEX_PROFIT_FACT -- 利润 +,0 AS PROFIT_COMPLETION_RATE -- 利润完成率 +,0 AS INDEX_MARKET_FACT -- 市拓 +,0 AS MARKET_COMPLETION_RATE -- 市拓完成率 +,0 AS TODAY_TOLL_FEE -- 今日收费 +,0 AS TYEAR_TOLL_FEE -- 年度累计收费 +,0 AS MON_TOLL_FEE -- 月度累计收费 +,0 AS CU_COLLECTION_RATE -- 当期收缴率 +,0 AS PR_COLLECTION_RATE -- 往期收缴率 +,0 AS COLLECTION_RATE -- 综合收缴率 +,0 AS PR_OWED_AMT -- 往期欠费金额 +,0 AS CU_OWED_AMT -- 当期欠费金额 +,0 AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,0 AS DEVICE_GOOD_RATE -- 设备完好率 +,0 AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,0 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,0 AS RETAIL_FINISH_RATE -- 新零售完成率 +,0 AS RENT_RATE -- 商业资产出租率 +,SUM(T.received_money) / SUM(T.current_sure_money) + AS RENT_COLLECTION_RATE -- 租金收缴率 +,0 AS GUEST_ROOM_FEE -- 客房单价 +,0 AS GUEST_RENT_RATE -- 客房出租率 +FROM +( + SELECT + T1.received_money AS received_money + ,T1.current_sure_money AS current_sure_money + + FROM + ( + SELECT + a.project_id -- 项目id 关联bs_project表 + ,SUM(a.received_money) AS received_money -- 实收金额 + ,SUM(a.current_sure_money) AS current_sure_money -- 实际应收金额=应收金额-合同减免金额 + -- ,SUM(a.under_money) AS under_money -- 欠收金额 + FROM + ( + SELECT + contract_id + ,accrual_month + ,start_period + ,bill_type + ,received_money -- 实收金额 + ,current_sure_money -- 实际应收金额=应收金额-合同减免金额 + ,current_sure_money - received_money as under_money -- 欠收金额 + ,project_id + FROM dw.ods_bs_fi_bills_d + WHERE save_status = 1 -- 账单状态 0是保存 1是审核过的 + -- ${if(len(project) == 0,"","AND project_id in (" + project + ")")} + )a + left join + ( + SELECT + status + ,stop_date + ,id + FROM dw.ods_bs_contract_d + WHERE del_flag = 0 + )bc + on bc.id = a.contract_id + WHERE ((bc.status != 2 and bc.stop_date is null) OR + (bc.stop_date is not null + and ((a.accrual_month <= DATE_FORMAT(bc.stop_date, '%Y-%m') + and a.start_period <= bc.stop_date) + + or a.bill_type = 15) + )) + group by + a.project_id + UNION ALL + SELECT + a.project_id + ,SUM(b.received_amount) AS received_money + ,SUM(b.received_money) AS current_sure_money + -- ,SUM(b.under_money) AS under_money + FROM + ( + SELECT + receive_no -- 催缴单号 + ,project_id + FROM dw.ods_bs_fi_receive_other_d + where recheck_status = 2 + )a + LEFT JOIN + ( + SELECT + receive_no + ,received_amount + ,received_money + ,received_money - received_amount AS under_money + FROM dw.ods_bs_fi_receive_other_item_d + )b + ON a.receive_no = b.receive_no + group by + project_id + )T1 + left join + ( + select + distinct id + ,erp_id + from dw.ods_bs_project_d + ) b + on T1.project_id = b.id + left join + ( + select + distinct + organ_code + ,organ_name + ,comm_id + ,comm_name + from dim_organ_mapping + where comm_id is not null + ) c + on b.erp_id = c.comm_id + where 1 = 1 +)T +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'OTHER' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'其他' AS BUSINESS_NAME -- 业务类型名称 +,0 AS INDEX_INCOME_FACT -- 收入 +,0 AS INCOME_COMPLETION_RATE -- 收入完成率 +,0 AS INDEX_COST_FACT -- 成本 +,0 AS COST_COMPLETION_RATE -- 成本完成率 +,0 AS INDEX_PROFIT_FACT -- 利润 +,0 AS PROFIT_COMPLETION_RATE -- 利润完成率 +,0 AS INDEX_MARKET_FACT -- 市拓 +,0 AS MARKET_COMPLETION_RATE -- 市拓完成率 +,0 AS TODAY_TOLL_FEE -- 今日收费 +,0 AS TYEAR_TOLL_FEE -- 年度累计收费 +,0 AS MON_TOLL_FEE -- 月度累计收费 +,0 AS CU_COLLECTION_RATE -- 当期收缴率 +,0 AS PR_COLLECTION_RATE -- 往期收缴率 +,0 AS COLLECTION_RATE -- 综合收缴率 +,0 AS PR_OWED_AMT -- 往期欠费金额 +,0 AS CU_OWED_AMT -- 当期欠费金额 +,0 AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,0 AS DEVICE_GOOD_RATE -- 设备完好率 +,0 AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,0 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,0 AS RETAIL_FINISH_RATE -- 新零售完成率 +,0 AS RENT_RATE -- 商业资产出租率 +,0 AS RENT_COLLECTION_RATE -- 租金收缴率 +,AVG(price) AS GUEST_ROOM_FEE -- 客房单价 +,AVG(occupancy_rate) / 100 AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.ods_hotel_price +WHERE quanter = CASE WHEN quarter(CURRENT_TIMESTAMP()) - 1 = 1 THEN '一季度' + WHEN quarter(CURRENT_TIMESTAMP()) - 1 = 2 THEN '二季度' + WHEN quarter(CURRENT_TIMESTAMP()) - 1 = 3 THEN '三季度' + WHEN quarter(CURRENT_TIMESTAMP()) - 1 = 4 THEN '四季度' + ELSE 0 END +; + + +-- ================================================== +-- 指标卡|地图 +-- ================================================== + + +DROP TABLE IF EXISTS dw.dws_president_map_d; +CREATE TABLE IF NOT EXISTS dw.dws_president_map_d ( + CURRENT_DT VARCHAR(50) COMMENT '当期日期' +,PROVINCE VARCHAR(100) COMMENT '省份' +,CITY VARCHAR(100) COMMENT '城市' +,COUNTY VARCHAR(100) COMMENT '县' +,TREATY_AREA DECIMAL(12,4) COMMENT '合约面积(万m²)' +,MANAGE_AREA DECIMAL(12,4) COMMENT '在管面积(万m²)' +,ROOM_NUM BIGINT COMMENT '总户数(户)' +,COMM_NUM BIGINT COMMENT '在管项目数(个)' +)COMMENT = '总裁驾驶舱对外展示地图指标' +; + + +TRUNCATE TABLE dw.dws_president_map_d +DELETE FROM dw.dws_president_map_d WHERE CURRENT_DT = '2024-08-02'; + +INSERT INTO dw.dws_president_map_d +SELECT +current_date() AS CURRENT_DT -- 当前日期 +,a.Province AS PROVINCE -- 省份 +,a.City AS CITY -- 城市 +,a.County AS COUNTY -- 县 +,round(sum(a.ContractArea) / 10000,2) AS TREATY_AREA -- 合约面积(万m²) +,sum(a.ManageContractArea) / 10000 AS MANAGE_AREA -- 在管面积(万m²) +,sum(c.room_num) AS ROOM_NUM -- 总户数(户) +,count(*) AS COMM_NUM -- 在管项目数 +FROM dim_project_base_info_d a +inner join (select distinct organ_code, organ_name, comm_id , comm_name from dim_organ_mapping where comm_id is not null and comm_name not like '%撤场%' and comm_name not like '%案场%' and comm_name not like '%禁用%' +and length(comm_id) != 0) b +on a.CommId = b.comm_id +left join ( + select + CommID, count(*) room_num + from dim_room_d + group by CommID +) c on a.CommId = c.CommID +where 1=1 +group by +a.Province +,a.City +,a.County +; + +-- ================================================== +-- 图表 +-- ================================================== + +DROP TABLE IF EXISTS dw.dws_president_chart_d; +CREATE TABLE IF NOT EXISTS dw.dws_president_chart_d ( +CURRENT_DT VARCHAR(50) COMMENT '年' +,YM VARCHAR(100) COMMENT '年月' +,MONTHS VARCHAR(100) COMMENT '月份' +,CURRENT_QUARTER VARCHAR(100) COMMENT '年月归属季度' +,PLAN_NUM INT COMMENT '计划总数' +,PLAN_INCOMPLETE_NUM INT COMMENT '未完成计划数量' +,PLAN_COMPLETE_RATE DECIMAL(6,4) COMMENT '计划完成率' +,KM_TARGET DECIMAL(6,4) COMMENT '客满目标得分' +,KM_DF DECIMAL(6,4) COMMENT '客满得分' +,RESPONSE_TIMELY_RATE DECIMAL(6,4) COMMENT '响应率' +,CLOSE_RATE DECIMAL(6,4) COMMENT '闭单率' +,DELAY_RATE DECIMAL(6,4) COMMENT '延期率' +,TOUSU_INCIDENT_NUM INT COMMENT '投诉总量' +,TOUSU_PER_ROOM_RATE INT COMMENT '每万户平均投诉量' +)COMMENT = '总裁驾驶舱对外展示图表指标' + + +DELETE FROM dw.dws_president_chart_d WHERE CURRENT_DT = '2024-08-01'; +TRUNCATE TABLE dw.dws_president_chart_d; + +INSERT INTO dw.dws_president_chart_d +SELECT +current_date() AS CURRENT_DT -- 当前日期 +,ym AS YM -- 年月 +,concat(right(ym,2) + 0 , '月') AS MONTHS +,'' AS CURRENT_QUARTER -- 年月归属季度 +,sum(plan_num) AS PLAN_NUM -- 计划总数 +,sum(plan_incomplete_num) AS PLAN_INCOMPLETE_NUM -- 未完成计划数量 +,CASE WHEN sum(plan_num) = 0 THEN 0 + ELSE sum(plan_complete_num) / sum(plan_num) + END AS PLAN_COMPLETE_RATE -- 计划完成率 +,0 AS KM_TARGET -- 客满目标得分 +,0 AS KM_DF -- 客满得分 +,0 AS RESPONSE_TIMELY_RATE -- 响应率 +,0 AS CLOSE_RATE -- 闭单率 +,0 AS DELAY_RATE -- 延期率 +,0 AS TOUSU_INCIDENT_NUM -- 投诉总量 +,0 AS TOUSU_PER_ROOM_RATE -- 每万户平均投诉量 +FROM dw.dws_operation_plan_summary_m a +left join + ( + select + distinct + organ_code + , organ_name + , comm_id + , comm_name +, oa_organ_code +, oa_organ_name +, oa_comm_id +, oa_comm_name +from dim_organ_mapping where comm_id is not null +) b +on a.subcompanyid = b.oa_comm_id +where 1=1 +and ym <= DATE_FORMAT(NOW(),'%Y-%m') +and STR_TO_DATE(concat(ym,'-01'),'%Y-%m-%d') >= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 6 MONTH),'%Y-%m-01') +and left(ym,4) = DATE_FORMAT(NOW(),'%Y') +group by ym +-- order by ym asc +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +,NULL AS YM -- 年月 +,NULL AS MONTHS +,t1.jd AS CURRENT_QUARTER -- 年月归属季度 +,0 AS PLAN_NUM -- 计划总数 +,0 AS PLAN_INCOMPLETE_NUM -- 未完成计划数量 +,0 AS PLAN_COMPLETE_RATE -- 计划完成率 +,t1.km_target AS KM_TARGET -- 客满目标得分 +,t2.df AS KM_DF -- 客满得分 +,0 AS RESPONSE_TIMELY_RATE -- 响应率 +,0 AS CLOSE_RATE -- 闭单率 +,0 AS DELAY_RATE -- 延期率 +,0 AS TOUSU_INCIDENT_NUM -- 投诉总量 +,0 AS TOUSU_PER_ROOM_RATE -- 每万户平均投诉量 +FROM +( + select + '一季度' AS jd + ,km_target + from ods_wuye_gszt + where km_target is not null + and yr = YEAR(now()) + group by + km_target + union all + select + '二季度' AS jd + ,km_target + from ods_wuye_gszt + where km_target is not null + and yr = YEAR(now()) + group by + km_target + union all + select + '三季度' AS jd + ,km_target + from ods_wuye_gszt + where km_target is not null + and yr = YEAR(now()) + group by + km_target + union all + select + '四季度' AS jd + ,km_target + from ods_wuye_gszt + where km_target is not null + and yr = YEAR(now()) + group by + km_target +)t1 +left join +( + select + jd + ,df + from ods_wuye_gszt + where df is not null + AND zq = '物业整体' +)t2 +on t1.jd = t2.jd +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +,a.incident_ym AS YM -- 年月 +,concat(right(a.incident_ym,2) + 0 , '月') AS MONTHS +,0 AS CURRENT_QUARTER -- 年月归属季度 +,0 AS PLAN_NUM -- 计划总数 +,0 AS PLAN_INCOMPLETE_NUM -- 未完成计划数量 +,0 AS PLAN_COMPLETE_RATE -- 计划完成率 +,0 AS KM_TARGET -- 客满目标得分 +,0 AS KM_DF -- 客满得分 +, sum(response_timely_incident_num) / sum(incident_num) AS RESPONSE_TIMELY_RATE -- 响应率 +, sum(completed_incident_num - completed_not_close_incident_num) / sum(incident_num) + AS CLOSE_RATE -- 闭单率 +,sum(delay_incident_num) / sum(incident_num) + AS DELAY_RATE -- 延期率 +,sum(tousu_incident_num) + AS TOUSU_INCIDENT_NUM -- 投诉总量 +,(sum(tousu_incident_num) / sum(room_num)) * 10000 AS TOUSU_PER_ROOM_RATE -- 每万户平均投诉量 +FROM dws_estate_incident_info_m a +left join +( + select + CommID, count(*) room_num + from dim_room_d + group by CommID +)b +on a.comm_id = b.CommId +where left(a.incident_ym,4) = '2024' +group by a.incident_ym +-- order by a.incident_ym +; + + +SELECT + SUM(CURRENT_DT ) AS CURRENT_DT -- 当期日期 +,SUM(INDEX_INCOME_FACT ) AS INDEX_INCOME_FACT -- 收入 +,SUM(INCOME_COMPLETION_RATE ) AS INCOME_COMPLETION_RATE -- 收入完成率 +,SUM(INDEX_COST_FACT ) AS INDEX_COST_FACT -- 成本 +,SUM(COST_COMPLETION_RATE ) AS COST_COMPLETION_RATE -- 成本完成率 +,SUM(INDEX_PROFIT_FACT ) AS INDEX_PROFIT_FACT -- 利润 +,SUM(PROFIT_COMPLETION_RATE ) AS PROFIT_COMPLETION_RATE -- 利润完成率 +,SUM(INDEX_MARKET_FACT ) AS INDEX_MARKET_FACT -- 市拓 +,SUM(MARKET_COMPLETION_RATE ) AS MARKET_COMPLETION_RATE -- 市拓完成率 +,SUM(TODAY_TOLL_FEE ) AS TODAY_TOLL_FEE -- 今日收费(单位:万) +,SUM(TYEAR_TOLL_FEE ) AS TYEAR_TOLL_FEE -- 年度累计收费(单位:万) +,SUM(MON_TOLL_FEE ) AS MON_TOLL_FEE -- 月度累计收费(单位:万) +,SUM(CU_COLLECTION_RATE ) AS CU_COLLECTION_RATE -- 当期收缴率 +,SUM(PR_COLLECTION_RATE ) AS PR_COLLECTION_RATE -- 往期收缴率 +,SUM(COLLECTION_RATE ) AS COLLECTION_RATE -- 综合收缴率 +,SUM(PR_OWED_AMT ) AS PR_OWED_AMT -- 往期欠费金额(单位:万) +,SUM(CU_OWED_AMT ) AS CU_OWED_AMT -- 当期欠费金额(单位:万) +,SUM(ENERGY_CONSUMPTION_AMT ) AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,SUM(DEVICE_GOOD_RATE ) AS DEVICE_GOOD_RATE -- 设备完好率 +,SUM(DEVICE_SPACE_NORMAL_RATE ) AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,SUM(NEC ) AS NEC -- 在职人数 +,SUM(FMR ) AS FMR -- 满编率 +,SUM(FMR_TARGET ) AS FMR_TARGET -- 满编率目标值 +,SUM(TR ) AS TR -- 离职率 +,SUM(TR_TARGET ) AS TR_TARGET -- 离职率目标值 +,SUM(AC_FEE_RATE ) AS AC_FEE_RATE -- 人力成本费率 +,SUM(AC_FEE_RATE_TARGET ) AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,SUM(ASSESSMENT_OCCUPANY_RATE ) AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,SUM(RETAIL_FINISH_RATE ) AS RETAIL_FINISH_RATE -- 新零售完成率 +,SUM(RENT_RATE ) AS RENT_RATE -- 商业资产出租率 +,SUM(RENT_COLLECTION_RATE ) AS RENT_COLLECTION_RATE -- 租金收缴率 +,SUM(GUEST_ROOM_FEE ) AS GUEST_ROOM_FEE -- 客房单价(单位:元) +,SUM(GUEST_RENT_RATE ) AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.dws_president_base_index_d +WHERE CURRENT_DT = '2024-07-31' + + + + + +-- 2_president_map_对外 + +SELECT + CURRENT_DT -- 当期日期 +,PROVINCE -- 省份 +,CITY -- 城市 +,COUNTY -- 县 +,TREATY_AREA -- 合约面积(万m²) +,MANAGE_AREA -- 在管面积(万m²) +,ROOM_NUM -- 总户数(户) +,COMM_NUM -- 在管项目数(个) +FROM dw.dws_president_map_d +WHERE CURRENT_DT = '2024-07-31' + + + +sum(b_president_map_对外.select(COMM_NUM)) + +sum(b_president_map_对外.select(TREATY_AREA)) + + +sum(b_president_map_对外.select(MANAGE_AREA)) + + +sum(b_president_map_对外.select(ROOM_NUM)) + + + +-- c_president_chart_plan_对外 + + +SELECT +YM +,PLAN_NUM AS PLAN_NUM -- 计划总数 +,PLAN_INCOMPLETE_NUM PLAN_INCOMPLETE_NUM -- 未完成计划数量 +,PLAN_COMPLETE_RATE AS PLAN_COMPLETE_RATE -- 计划完成率 +FROM dw.dws_president_chart_d +WHERE CURRENT_DT = '${p_ym}' +AND length(YM) = 4 + + + +-- d_president_chart_km_对外 + +SELECT +CURRENT_DT -- 年 +,CURRENT_QUARTER -- 年月归属季度 +,KM_TARGET -- 客满目标得分 +,KM_DF -- 客满得分 +FROM dw.dws_president_chart_d +WHERE CURRENT_DT = '2024-08-02' +AND CURRENT_QUARTER LIKE '%季度%' + + + +-- e_president_chart_complaints_对外 + + + +SELECT +CURRENT_DT -- 年 +,ym -- 年月 +,RESPONSE_TIMELY_RATE -- 响应率 +,CLOSE_RATE -- 闭单率 +,DELAY_RATE -- 延期率 +,TOUSU_INCIDENT_NUM -- 投诉总量 +,TOUSU_PER_ROOM_RATE -- 每万户平均投诉量 +FROM dw.dws_president_chart_d +WHERE CURRENT_DT = '2024-08-02' +AND length(YM) = 6 + + + + + + +SELECT +CURRENT_DT -- 年 +,YM -- 年月 +,CURRENT_QUARTER -- 年月归属季度 +,PLAN_NUM -- 计划总数 +,PLAN_INCOMPLETE_NUM -- 未完成计划数量 +,PLAN_COMPLETE_RATE -- 计划完成率 +,KM_TARGET -- 客满目标得分 +,KM_DF -- 客满得分 +,RESPONSE_TIMELY_RATE -- 响应率 +,CLOSE_RATE -- 闭单率 +,DELAY_RATE -- 延期率 +,TOUSU_INCIDENT_NUM -- 投诉总量 +,TOUSU_PER_ROOM_RATE -- 每万户平均投诉量 +FROM dw.dws_president_chart_d +WHERE CURRENT_DT = '${p_ym}' + + + + + + +SELECT +T.CURRENT_QUARTER AS CURRENT_QUARTER +,T.KM_TARGET AS KM_TARGET +,T.KM_DF AS KM_DF +FROM +( +SELECT + + CURRENT_QUARTER -- 年月归属季度 +,KM_TARGET -- 客满目标得分 +,KM_DF -- 客满得分 +,CASE WHEN CURRENT_QUARTER = '一季度' THEN 1 + WHEN CURRENT_QUARTER = '二季度' THEN 2 + WHEN CURRENT_QUARTER = '三季度' THEN 3 + WHEN CURRENT_QUARTER = '四季度' THEN 4 + END AS RK +FROM dw.dws_president_chart_d +WHERE CURRENT_DT = '${p_ym}' +AND CURRENT_QUARTER LIKE '%季度%' +)T +ORDER BY T.RK +; + + + +SELECT +CURRENT_DT -- 年 +,CURRENT_QUARTER -- 年月归属季度 +,KM_TARGET -- 客满目标得分 +,KM_DF -- 客满得分 +FROM dw.dws_president_chart_d +WHERE CURRENT_DT = '${p_ym}' +AND CURRENT_QUARTER LIKE '%季度%' +; + + + + + +-- OR(A3 == "1月",A3 == "2月",A3 == "3月" ,A3 == "4月", A3 == "5月",A3 == "6月",A3 == "7月",A3 == "8月" ,A3 == "9月", A3 == "10月",A3 == "11月",A3 == "12月") + + + +-- OR(A3 == "一季度",A3 == "二季度",A3 == "三季度" ,A3 == "四季度") + + + + + + +SELECT + + INDEX_INCOME_FACT AS INDEX_INCOME_FACT -- 收入 +,INCOME_COMPLETION_RATE AS INCOME_COMPLETION_RATE -- 收入完成率 +,INDEX_COST_FACT AS INDEX_COST_FACT -- 成本 +,COST_COMPLETION_RATE AS COST_COMPLETION_RATE -- 成本完成率 +,INDEX_PROFIT_FACT AS INDEX_PROFIT_FACT -- 利润 +,PROFIT_COMPLETION_RATE AS PROFIT_COMPLETION_RATE -- 利润完成率 +,INDEX_MARKET_FACT AS INDEX_MARKET_FACT -- 市拓 +,MARKET_COMPLETION_RATE AS MARKET_COMPLETION_RATE -- 市拓完成率 +,TODAY_TOLL_FEE AS TODAY_TOLL_FEE -- 今日收费(单位:万) +,TYEAR_TOLL_FEE AS TYEAR_TOLL_FEE -- 年度累计收费(单位:万) +,MON_TOLL_FEE AS MON_TOLL_FEE -- 月度累计收费(单位:万) +,CU_COLLECTION_RATE AS CU_COLLECTION_RATE -- 当期收缴率 +,PR_COLLECTION_RATE AS PR_COLLECTION_RATE -- 往期收缴率 +,COLLECTION_RATE AS COLLECTION_RATE -- 综合收缴率 +,PR_OWED_AMT AS PR_OWED_AMT -- 往期欠费金额(单位:万) +,CU_OWED_AMT AS CU_OWED_AMT -- 当期欠费金额(单位:万) +,ENERGY_CONSUMPTION_AMT AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,DEVICE_GOOD_RATE AS DEVICE_GOOD_RATE -- 设备完好率 +,DEVICE_SPACE_NORMAL_RATE AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,NEC AS NEC -- 在职人数 +,FMR AS FMR -- 满编率 +,FMR_TARGET AS FMR_TARGET -- 满编率目标值 +,TR AS TR -- 离职率 +,TR_TARGET AS TR_TARGET -- 离职率目标值 +,AC_FEE_RATE AS AC_FEE_RATE -- 人力成本费率 +,AC_FEE_RATE_TARGET AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,ASSESSMENT_OCCUPANY_RATE AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,RETAIL_FINISH_RATE AS RETAIL_FINISH_RATE -- 新零售完成率 +,RENT_RATE AS RENT_RATE -- 商业资产出租率 +,RENT_COLLECTION_RATE AS RENT_COLLECTION_RATE -- 租金收缴率 +,GUEST_ROOM_FEE AS GUEST_ROOM_FEE -- 客房单价(单位:元) +,GUEST_RENT_RATE AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.dws_president_base_index_d +; + + + +SELECT + T.INDEX_INCOME_FACT AS INDEX_INCOME_FACT -- 收入 +,T.INCOME_COMPLETION_RATE AS INCOME_COMPLETION_RATE -- 收入完成率 +,T.INDEX_COST_FACT AS INDEX_COST_FACT -- 成本 +,T.COST_COMPLETION_RATE AS COST_COMPLETION_RATE -- 成本完成率 +,T.INDEX_PROFIT_FACT AS INDEX_PROFIT_FACT -- 利润 +,T.PROFIT_COMPLETION_RATE AS PROFIT_COMPLETION_RATE -- 利润完成率 +,T.INDEX_MARKET_FACT AS INDEX_MARKET_FACT -- 市拓 +,T.MARKET_COMPLETION_RATE AS MARKET_COMPLETION_RATE -- 市拓完成率 +,T.TODAY_TOLL_FEE AS TODAY_TOLL_FEE -- 今日收费(单位:万) +,T.TYEAR_TOLL_FEE AS TYEAR_TOLL_FEE -- 年度累计收费(单位:万) +,T.MON_TOLL_FEE AS MON_TOLL_FEE -- 月度累计收费(单位:万) +,T.CU_COLLECTION_RATE AS CU_COLLECTION_RATE -- 当期收缴率 +,T.PR_COLLECTION_RATE AS PR_COLLECTION_RATE -- 往期收缴率 +,T.COLLECTION_RATE AS COLLECTION_RATE -- 综合收缴率 +,T.PR_OWED_AMT AS PR_OWED_AMT -- 往期欠费金额(单位:万) +,T.CU_OWED_AMT AS CU_OWED_AMT -- 当期欠费金额(单位:万) +,T.ENERGY_CONSUMPTION_AMT AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,T.DEVICE_GOOD_RATE AS DEVICE_GOOD_RATE -- 设备完好率 +,T.DEVICE_SPACE_NORMAL_RATE AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,T.NEC AS NEC -- 在职人数 +,T.FMR AS FMR -- 满编率 +,T.FMR_TARGET AS FMR_TARGET -- 满编率目标值 +,T.TR AS TR -- 离职率 +,T.TR_TARGET AS TR_TARGET -- 离职率目标值 +,T.AC_FEE_RATE AS AC_FEE_RATE -- 人力成本费率 +,T.AC_FEE_RATE_TARGET AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,T.ASSESSMENT_OCCUPANY_RATE AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,T.RETAIL_FINISH_RATE AS RETAIL_FINISH_RATE -- 新零售完成率 +,T.RENT_RATE AS RENT_RATE -- 商业资产出租率 +,T.RENT_COLLECTION_RATE AS RENT_COLLECTION_RATE -- 租金收缴率 +,T.GUEST_ROOM_FEE AS GUEST_ROOM_FEE -- 客房单价(单位:元) +,T.GUEST_RENT_RATE AS GUEST_RENT_RATE -- 客房出租率 +FROM +( +SELECT + INDEX_INCOME_FACT AS INDEX_INCOME_FACT -- 收入 +,INCOME_COMPLETION_RATE AS INCOME_COMPLETION_RATE -- 收入完成率 +,INDEX_COST_FACT AS INDEX_COST_FACT -- 成本 +,COST_COMPLETION_RATE AS COST_COMPLETION_RATE -- 成本完成率 +,INDEX_PROFIT_FACT AS INDEX_PROFIT_FACT -- 利润 +,PROFIT_COMPLETION_RATE AS PROFIT_COMPLETION_RATE -- 利润完成率 +,INDEX_MARKET_FACT AS INDEX_MARKET_FACT -- 市拓 +,MARKET_COMPLETION_RATE AS MARKET_COMPLETION_RATE -- 市拓完成率 +,TODAY_TOLL_FEE AS TODAY_TOLL_FEE -- 今日收费(单位:万) +,TYEAR_TOLL_FEE AS TYEAR_TOLL_FEE -- 年度累计收费(单位:万) +,MON_TOLL_FEE AS MON_TOLL_FEE -- 月度累计收费(单位:万) +,CU_COLLECTION_RATE AS CU_COLLECTION_RATE -- 当期收缴率 +,PR_COLLECTION_RATE AS PR_COLLECTION_RATE -- 往期收缴率 +,COLLECTION_RATE AS COLLECTION_RATE -- 综合收缴率 +,PR_OWED_AMT AS PR_OWED_AMT -- 往期欠费金额(单位:万) +,CU_OWED_AMT AS CU_OWED_AMT -- 当期欠费金额(单位:万) +,ENERGY_CONSUMPTION_AMT AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,DEVICE_GOOD_RATE AS DEVICE_GOOD_RATE -- 设备完好率 +,DEVICE_SPACE_NORMAL_RATE AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,NEC AS NEC -- 在职人数 +,FMR AS FMR -- 满编率 +,FMR_TARGET AS FMR_TARGET -- 满编率目标值 +,TR AS TR -- 离职率 +,TR_TARGET AS TR_TARGET -- 离职率目标值 +,AC_FEE_RATE AS AC_FEE_RATE -- 人力成本费率 +,AC_FEE_RATE_TARGET AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,ASSESSMENT_OCCUPANY_RATE AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,RETAIL_FINISH_RATE AS RETAIL_FINISH_RATE -- 新零售完成率 +,RENT_RATE AS RENT_RATE -- 商业资产出租率 +,RENT_COLLECTION_RATE AS RENT_COLLECTION_RATE -- 租金收缴率 +,GUEST_ROOM_FEE AS GUEST_ROOM_FEE -- 客房单价(单位:元) +,GUEST_RENT_RATE AS GUEST_RENT_RATE -- 客房出租率 +,ROW_NUMBER() OVER (ORDER BY id DESC) AS rn +FROM dw.dws_president_base_index_d +)T +WHERE rn = 1 \ No newline at end of file From d054e5449c9c4f0e5c4b25195e2923040ae38d61 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Mon, 12 Aug 2024 17:19:41 +0800 Subject: [PATCH 17/89] =?UTF-8?q?=E6=80=BB=E8=A3=81=E5=AF=B9=E5=A4=96?= =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E5=9C=B0=E5=9B=BE=E6=8C=87=E6=A0=87=E5=8F=96?= =?UTF-8?q?=E5=80=BC=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- finereport/kanban/pc/总裁驾驶舱对外大屏数据集.sql | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/finereport/kanban/pc/总裁驾驶舱对外大屏数据集.sql b/finereport/kanban/pc/总裁驾驶舱对外大屏数据集.sql index db91875..849e476 100644 --- a/finereport/kanban/pc/总裁驾驶舱对外大屏数据集.sql +++ b/finereport/kanban/pc/总裁驾驶舱对外大屏数据集.sql @@ -695,7 +695,7 @@ CREATE TABLE IF NOT EXISTS dw.dws_president_map_d ( ; -TRUNCATE TABLE dw.dws_president_map_d +TRUNCATE TABLE dw.dws_president_map_d; DELETE FROM dw.dws_president_map_d WHERE CURRENT_DT = '2024-08-02'; INSERT INTO dw.dws_president_map_d @@ -705,17 +705,17 @@ current_date() AS CURRENT_DT -- 当前日期 ,a.City AS CITY -- 城市 ,a.County AS COUNTY -- 县 ,round(sum(a.ContractArea) / 10000,2) AS TREATY_AREA -- 合约面积(万m²) -,sum(a.ManageContractArea) / 10000 AS MANAGE_AREA -- 在管面积(万m²) +,round(sum(a.TakeOverArea) / 10000,2) AS MANAGE_AREA -- 在管面积(万m²) ,sum(c.room_num) AS ROOM_NUM -- 总户数(户) ,count(*) AS COMM_NUM -- 在管项目数 -FROM dim_project_base_info_d a +FROM dw.dim_project_base_info_d a inner join (select distinct organ_code, organ_name, comm_id , comm_name from dim_organ_mapping where comm_id is not null and comm_name not like '%撤场%' and comm_name not like '%案场%' and comm_name not like '%禁用%' and length(comm_id) != 0) b on a.CommId = b.comm_id left join ( select CommID, count(*) room_num - from dim_room_d + from dw.dim_room_d group by CommID ) c on a.CommId = c.CommID where 1=1 From 6351486b570eb372f564f325608e91111f34d82a Mon Sep 17 00:00:00 2001 From: yangkunan Date: Wed, 21 Aug 2024 09:59:05 +0800 Subject: [PATCH 18/89] =?UTF-8?q?=E6=B3=95=E5=8A=A1dws=E8=A1=A8=E6=9C=80?= =?UTF-8?q?=E6=96=B0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 4 ++ dw/dws/dws_law_tran_coll_d.sql | 98 +++++++++++++++++++++++++++++----- finereport/kanban/pc/法务.sql | 35 ++++++++++++ 3 files changed, 123 insertions(+), 14 deletions(-) diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index d31dbf8..4809418 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -13,6 +13,8 @@ + + @@ -20,6 +22,7 @@ + @@ -27,6 +30,7 @@ + diff --git a/dw/dws/dws_law_tran_coll_d.sql b/dw/dws/dws_law_tran_coll_d.sql index 0d3658b..01fb28d 100644 --- a/dw/dws/dws_law_tran_coll_d.sql +++ b/dw/dws/dws_law_tran_coll_d.sql @@ -3,20 +3,90 @@ select , case when project_name like '%撤场%' then '撤场' else '在管' end is_in_manage , case when a.status_id in (5,6) then '诉讼' when a.status_id in (4,7) then '非诉' - else c.case_type end is_lawsuit - , sum(a.owed_amt) trans_amt + else ifnull(c.case_type,b.case_type) end is_lawsuit + , sum(a.trans_amt) trans_amt , count(distinct a.belong_resource) trans_household_num - , sum(d.payment_coll_amt) payment_coll_amt - , count(distinct d.belong_resource) payment_coll_num + , 0 payment_coll_amt + , 0 payment_coll_num , b.apply_date ymd - , sum(datediff(ifnull(str_to_date(c.wjsj,'%Y-%m-%d'),current_date()),str_to_date(b.apply_date,'%Y-%m-%d'))) trans_duration -from (select * from dwd_law_owed_info_d where status_id in (0,4,5,6,7,8,9,10)) a - left join (select trans_payment, apply_date from dwd_law_trans_record_d) b + , datediff(ifnull(str_to_date(c.wjsj,'%Y-%m-%d'),current_date()),str_to_date(b.apply_date,'%Y-%m-%d')) trans_duration + , a.collect_unit + , a.acct_age +from ( + select a.* + , zl acct_age -- 给所属资源打上账龄 + from dwd_law_owed_info_d a + left join ( + /*取高层物业费或者车位物业费作为账龄的标记*/ + select * + from ( + select belong_resource , cost_name , count(*) zl + , row_number() over (partition by belong_resource order by if(cost_name = '高层物业服务费',1,if(cost_name = '车位物业服务费',2,9)) asc) rn + from dwd_law_owed_info_d + where status_id in (6,7,8,9,10,11) + group by belong_resource , cost_name + ) a where rn = 1 + ) b + on a.belong_resource = b.belong_resource + where status_id in (6,7,8,9,10,11) + ) a + left join ( + select a.trans_payment, a.apply_date, b.return_date , case when a.trans_type = 0 then '诉讼' else '非诉' end case_type + from dwd_law_trans_record_d a + left join dwd_law_trans_return_record_d b + on a.trans_payment = b.owed_payment + where str_to_date(a.apply_date,'%Y-%m-%d') > ifnull(date_format(b.return_date,'%Y-%m-%d'),'2000-01-01') +) b on a.id = b.trans_payment - left join (select id, belong_resource, case_type, wjsj from dwd_law_case_info_d where status not in('作废','草稿') and belong_resource != '108926') c - on a.belong_resource = c.belong_resource - left join (select payment_coll_date, case_name, payment_coll_amt, belong_resource from dwd_law_payment_collection_d) d - on c.id = d.case_name - left join (select distinct organ_code, organ_name, comm_id, comm_name from dim_organ_mapping) e - on a.project_code = e.comm_id -group by 1,2,3,4,5,6,11 \ No newline at end of file + left join ( + select * from ( + select + a.case_type + , a.wjsj + , b.owed_id + , a.collect_unit + , row_number() over (partition by owed_id order by if(status in ('草稿','作废'),1,0) asc) rn + from dwd_law_case_info_d a + left join dwd_law_case_detail_d b + on a.id = b.case_id + ) a + where rn = 1 +) c + on a.id = c.owed_id + inner join (select distinct organ_code, organ_name, comm_id, comm_name from dim_organ_mapping) e + on a.project_code = e.comm_id +group by 1,2,3,4,5,6,11,12,13,14 +union all +select + a.district_code organ_code + , a.district_name organ_name + , a.project_code comm_id + , a.project_name comm_name + , case when a.project_name like '%撤场%' then '撤场' else '在管' end is_in_manage + , b.case_type is_lawsuit + , 0, 0 + , sum(a.payment_coll_amt) payment_coll_amt + , sum(case when a.rn =1 then 1 else 0 end) payment_coll_num + , a.apply_date ymd + , null + , b.collect_unit + , a.acct_age +from ( + select a.*, b.zl acct_age, row_number() over (partition by district_code, a.belong_resource order by a.apply_date asc) rn + from dwd_law_payment_collection_d a + left join ( + /*取高层物业费或者车位物业费作为账龄的标记*/ + select * + from ( + select belong_resource , cost_name , count(*) zl + , row_number() over (partition by belong_resource order by if(cost_name = '高层物业服务费',1,if(cost_name = '车位物业服务费',2,9)) asc) rn + from dwd_law_owed_info_d + where status_id in (6,7,8,9,10,11) + group by belong_resource , cost_name + ) a where rn = 1 + ) b + on a.belong_resource = b.belong_resource + ) a + left join dwd_law_case_info_d b + on a.case_name = b.id +group by 1,2,3,4,5,6,11,13,14 \ No newline at end of file diff --git a/finereport/kanban/pc/法务.sql b/finereport/kanban/pc/法务.sql index e69de29..af244aa 100644 --- a/finereport/kanban/pc/法务.sql +++ b/finereport/kanban/pc/法务.sql @@ -0,0 +1,35 @@ +-- 【指标卡】 + + +SELECT + SUM(IFNULL(trans_household_num,0)) AS 移交户数, + SUM(IFNULL(trans_amt,0))/10000 AS 移交金额, + SUM(IFNULL(payment_coll_num,0)) AS 解决户数, + SUM(IFNULL(payment_coll_amt,0))/10000 AS 解决金额, + (SUM(IFNULL(trans_amt,0)) - SUM(IFNULL(payment_coll_amt,0)))/10000 AS 未解决金额, + SUM(IFNULL(trans_household_num,0)) - SUM(IFNULL(payment_coll_num,0)) AS 未解决户数, + SUM(IFNULL(payment_coll_amt,0)) / SUM(IFNULL(trans_amt,0)) AS 回款解决率, + SUM(IFNULL(payment_coll_num,0)) / SUM(IFNULL(trans_household_num,0)) AS 销户率 +FROM dw.dws_law_tran_coll_d +WHERE left(ymd,7) = '2024-08' + WHERE left(ymd,7) <= '${p_ym}%' +${IF(LEN(p_area)!=0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +${if(left(fine_role,2)=="项目","and comm_name = '"+G +ETUSERDEPARTMENTS(3)+"'","")} + + +-- 【未移交款项】 + + +SELECT + ${IF(LEN(p_area)>0,"project_name","district_name")} AS 分析维度, + SUM(IFNULL(owed_amt,0))/10000 AS 未决账款总额, + SUM(IFNULL(morethan_24m_not_trans_amt,0))/10000 AS 往期欠费账龄24月以上未移交账款金额, + SUM(IFNULL(owed_num,0)) AS 未决账款户数, + SUM(IFNULL(morethan_24m_not_trans_num,0)) AS 往期欠费账龄24月以上未移交户数 +FROM dws_law_not_tran_payment_m +WHERE 1=1 + ${IF(LEN(p_area)!=0," AND district_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and project_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +GROUP BY 分析维度 +order by 未决账款总额 desc \ No newline at end of file From a191fbfb829166f5f782087d68aab384c4be58e1 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Thu, 22 Aug 2024 15:41:08 +0800 Subject: [PATCH 19/89] =?UTF-8?q?=E5=A4=9A=E7=BB=8F=E5=90=88=E5=90=8C?= =?UTF-8?q?=E5=88=B0=E6=9C=9F=E6=83=85=E5=86=B5=E6=98=8E=E7=BB=86=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 1 + dw/dwd/dwd_law_owed_info_d.sql | 5 +- .../6_innovation/5_多经合同到期情况.sql | 109 ++++++++++++++++++ 3 files changed, 114 insertions(+), 1 deletion(-) diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 4809418..af24d12 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -39,6 +39,7 @@ + diff --git a/dw/dwd/dwd_law_owed_info_d.sql b/dw/dwd/dwd_law_owed_info_d.sql index 264d385..bfea181 100644 --- a/dw/dwd/dwd_law_owed_info_d.sql +++ b/dw/dwd/dwd_law_owed_info_d.sql @@ -34,4 +34,7 @@ on a.ssxm = b.id left join (select id, left(pqbm,4) pqbm from ods_oa_uf_wy_pq_d where length(pqbm)=6) c -- 地区 on a.sspq = c.id left join (select pqbm, pqmc from ods_oa_uf_wy_pq_d where length(pqbm)=4) d -- 片区 -on c.pqbm = d.pqbm \ No newline at end of file +on c.pqbm = d.pqbm +-- SELECT count(DISTINCT sszy) from ods_oa_uf_wy_qf_d where zt IN('6','7','8','9','10','11') And fyrq <= '2024-08-20' + +-- SELECT COUNT(DISTINCT belong_resource) FROM dwd_law_owed_info_d where status_id IN('6','7','8','9','10','11') \ No newline at end of file diff --git a/finereport/xiazuan/6_innovation/5_多经合同到期情况.sql b/finereport/xiazuan/6_innovation/5_多经合同到期情况.sql index e69de29..35836ed 100644 --- a/finereport/xiazuan/6_innovation/5_多经合同到期情况.sql +++ b/finereport/xiazuan/6_innovation/5_多经合同到期情况.sql @@ -0,0 +1,109 @@ +-- ***************************** +-- 创建人员: 杨坤安 +-- 创建时间: 2024-08-21 +-- 功能描述: 多径合同到期表填报表 +-- ***************************** + + + +DROP TABLE IF EXISTS dw.ods_divfmanage_contract_d; +CREATE TABLE IF NOT EXISTS dw.ods_divfmanage_contract_d ( + id VARCHAR(100) PRIMARY KEY + ,CommID VARCHAR(100) COMMENT '项目ID' + ,comm_name VARCHAR(100) COMMENT '项目名称' + ,OrganCode VARCHAR(100) COMMENT '片区ID' + ,organ_name VARCHAR(100) COMMENT '片区名称' + ,ContractCategory VARCHAR(100) COMMENT '合同类型' + ,ContractName VARCHAR(100) COMMENT '合同名称' + ,BuyerConnectpeople VARCHAR(100) COMMENT '商家名称-乙方' + ,ContractBeginTime VARCHAR(100) COMMENT '合同开始时间' + ,ContractEndTime VARCHAR(100) COMMENT '合同结束时间' + ,ContractTotalPrice DECIMAL(12,6) COMMENT '合同金额' + ,is_renew VARCHAR(100) COMMENT '是否续签' +)COMMENT = '多径合同到期表填报表' +; + + +SELECT count(1) from dw.ods_divfmanage_contract_d +where is_renew = '1'; + +SELECT + * +FROM dw.ods_divfmanage_contract_d +where is_renew = '1' ; + +SELECT +* +FROM dw.ods_divfmanage_contract_d +ORDER BY ContractEndTime; + + TRUNCATE TABLE dw.ods_divfmanage_contract_d; + +INSERT INTO ods_divfmanage_contract_d +SELECT + a.id as id + ,A.CommID AS CommID -- 项目ID + ,B.comm_name AS comm_name -- 项目名称 + ,B.organ_code AS OrganCode -- 片区ID + ,B.organ_name AS organ_name -- 片区名称 + ,A.ContractCategory AS ContractCategory -- 合同类型 + ,A.ContractName AS ContractName -- 合同名称 + ,A.BuyerConnectpeople AS BuyerConnectpeople -- 商家名称-乙方 + ,A.ContractBeginTime AS ContractBeginTime -- 合同开始时间 + ,A.ContractEndTime AS ContractEndTime -- 合同结束时间 + ,A.ContractTotalPrice AS ContractTotalPrice -- 合同金额 + ,'0' AS is_renew -- 是否续签 +FROM + ( + SELECT + id + ,CommID -- 项目ID + ,OrganCode -- 片区ID + ,ContractCategory -- 合同类型 + ,ContractName -- 合同名称 + ,BuyerConnectpeople -- 商家名称-乙方 + ,ContractBeginTime -- 合同开始时间 + ,ContractEndTime -- 合同结束时间 + ,ContractTotalPrice -- 合同金额 + FROM dw.ods_erp_tb_divfmanage_contract_d + WHERE IFNULL(IsDelete, 0) = 0 + AND IFNULL (AuditStatus, '') = '已审核' + AND IFNULL (ContractChangeType, '') <> '终止' + AND ContractEndTime >= CURDATE() + AND datediff(ContractEndTime,CURDATE()) BETWEEN 0 AND 90 + )A + JOIN + ( + SELECT + DISTINCT + organ_code -- erp片区id + ,organ_name -- erp片区名称 + ,comm_id -- erp项目id + ,comm_name -- erp项目名称 + FROM dw.dim_organ_mapping -- 组织结构映射维度表 + WHERE comm_id IS NOT NULL + )B + ON A.CommID = B.comm_id +; + + + +-- 【数据集】 +SELECT + id + ,CommID -- 项目ID + ,comm_name -- 项目名称 + ,OrganCode -- 片区ID + ,organ_name -- 片区名称 + ,ContractCategory -- 合同类型 + ,ContractName -- 合同名称 + ,BuyerConnectpeople -- 商家名称-乙方 + ,substr(ContractBeginTime,1,10) AS ContractBeginTime -- 合同开始时间 + ,substr(ContractEndTime,1,10) AS ContractEndTime -- 合同结束时间 + ,ContractTotalPrice -- 合同金额 + ,is_renew -- 是否续签 +FROM dw.ods_divfmanage_contract_d +WHERE is_renew = '0' +${IF(LEN(p_area)!=0," and OrganCode IN ('"+JOINARRAY(p_area,"','")+"')","")} +${IF(LEN(p_shop)!=0," and CommID IN ('"+JOINARRAY(p_shop,"','")+"')","")} +${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} \ No newline at end of file From 9f20fbe6f1245f51c1e110fd1395600096244eb0 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 3 Sep 2024 18:37:53 +0800 Subject: [PATCH 20/89] =?UTF-8?q?=E5=B7=A5=E7=A8=8B=E5=8D=95=E4=BD=8D?= =?UTF-8?q?=E9=9D=A2=E7=A7=AF=E8=83=BD=E8=80=97=E5=90=8C=E7=8E=AF=E6=AF=94?= =?UTF-8?q?=E3=80=81=E9=A1=B9=E7=9B=AE=E6=98=8E=E7=BB=86=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 3 + finereport/kanban/mobile/工程_mobile.sql | 56 ++ finereport/kanban/mobile/物业_mobile.sql | 904 +++++++++++++++++- finereport/kanban/pc/工程.sql | 94 ++ .../3_property/1_各项目客户满意度得分.sql | 42 + .../xiazuan/2_operation/项目明细弹窗.sql | 330 +++++-- 6 files changed, 1340 insertions(+), 89 deletions(-) create mode 100644 finereport/tianbao/3_property/1_各项目客户满意度得分.sql diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index af24d12..65b33a7 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -22,6 +22,8 @@ + + @@ -31,6 +33,7 @@ + diff --git a/finereport/kanban/mobile/工程_mobile.sql b/finereport/kanban/mobile/工程_mobile.sql index e69de29..32c706f 100644 --- a/finereport/kanban/mobile/工程_mobile.sql +++ b/finereport/kanban/mobile/工程_mobile.sql @@ -0,0 +1,56 @@ +-- 【单位面积能耗同环比】 + +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 + ${IF(p_type = "环比","/*","")} + 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(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + ${IF(LEN(p_ym)>0," AND right(list_ym,2) ='" +right(p_ym,2) + "'","")} + and MeterType in ('水表','电表') + order by list_ym asc + ${IF(p_type = "环比","*/","")} + + ${IF(p_type = "环比","","/*")} + 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,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + ORDER BY list_ym ASC + ${IF(p_type = "环比","","*/")} + )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 +ORDER BY A.list_ym,A.MeterType +; \ No newline at end of file diff --git a/finereport/kanban/mobile/物业_mobile.sql b/finereport/kanban/mobile/物业_mobile.sql index fd788a9..a609d42 100644 --- a/finereport/kanban/mobile/物业_mobile.sql +++ b/finereport/kanban/mobile/物业_mobile.sql @@ -41,4 +41,906 @@ Text2:需要比较的第二组文本。 示例: EXACT("Spreadsheet","Spreadsheet")等于TRUE。 EXACT("Spreadsheet","S preadsheet")等于FALSE。 -EXACT("Spreadsheet","spreadsheet")等于FALSE。 \ No newline at end of file +EXACT("Spreadsheet","spreadsheet")等于FALSE。 + +-- 【客满得分汇总】 + +select + yr, + t_quarter, + organ_code, + organ_name, + index_myd_target, + index_mydf, + index_mydf / index_myd_target myd_complete_rate +select * from ods_wuye_complaint_half_year +where 1=1 and yr = '2024' and t_quarter = '二季度' +${if(len(organ)=0,"and organ_code = '0000'","and organ_code = '"+organ+"'")} + + + + + +-- 【report_各片区得分】 + + WITH T1 AS (/*各片区得分目标*/ +SELECT DISTINCT + organ_code, + organ_name, + organ_target +FROM ods_wuye_satisfaction_target +WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target > 0 +),T2 AS (/*各片区得分情况*/ +SELECT DISTINCT + organ_code, + organ_name, + index_mydf, + IFNULL(index_wl_yxybl,0) + IFNULL(index_mwl_yxybl,0) AS 样本量, + IFNULL(index_wl_myl,0) + IFNULL(index_mwl_myl,0) AS 满意量 +FROM ods_wuye_complaint_half_year +WHERE yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' +) +SELECT + ROW_NUMBER() OVER (ORDER BY T2.index_mydf DESC) AS 序号, + T1.organ_code, + T1.organ_name, + T1.organ_target AS 目标, + T2.index_mydf AS 满意度得分, + T2.样本量, + T2.满意量 +FROM T1 LEFT JOIN T2 ON T1.organ_code = T2.organ_code +WHERE T1.organ_target IS NOT NULL + ${if(left(fine_role,6)!="领悦集团总部","and T1.organ_name = '"+GETUSERDEPARTMENTS(2)+"'","")} +ORDER BY 满意度得分 DESC +; + + +-- 不选片区展示总得分 +${IF(OR(LEN(p_area)>0,left(fine_role,2)=="项目"),"/*", "")} +select + ifnull(index_mydf,'-') as index_mydf + ,IFNULL((index_mydf / index_myd_target),'-') as myd_complete_rate +from ods_wuye_complaint_half_year +where 1=1 +and yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' +AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' +and organ_code = '0000' +${IF(OR(LEN(p_area)>0,left(fine_role,2)=="项目"),"*/", "")} + +-- 选择片区显示片区得分 选择多个片区只会返回得分最高的片区 +${IF(AND(LEN(p_area)>0,left(fine_role,2)!="项目"),"", "/*")} +select + ifnull(index_mydf,'-') as index_mydf + ,IFNULL((index_mydf / index_myd_target),'-') as myd_complete_rate +from ods_wuye_complaint_half_year +where 1=1 +and yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' +AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' +${IF(LEN(p_area)>0,"AND organ_code IN('"+JOINARRAY(p_area,"','")+"')", "")} -- 如果选择的片区 筛选片区的数据 +${if(left(fine_role,6)!="领悦集团总部","and organ_name = '"+GETUSERDEPARTMENTS(2)+"'","")} +ORDER BY index_mydf desc +${IF(AND(LEN(p_area)>0,left(fine_role,2)!="项目"),"", "*/")} +-- 如果是项目负责人 需显示项目得分情况 +${IF(left(fine_role,2)=="项目","", "/*")} +WITH T3 AS ( + -- 各项目目标 + SELECT + comm_name + ,comm_id + ,comm_target -- 目标 + FROM ods_wuye_satisfaction_target -- 年度维护目标表 包含片区项目的目标值 + WHERE yr = '${LEFT(p_ym,4)}' + AND comm_type = '内盘' + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} -- 如果选择的片区 筛选片区的数据 + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +), +T4 AS ( + -- 各项目得分 + SELECT + comm_name + ,comm_id + ,index_dc_myddf -- 得分 + FROM ods_wuye_complaint + WHERE yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +) +SELECT +IFNULL(T4.index_dc_myddf,'-') as index_dc_myddf -- 得分 +,IFNULL((T4.index_dc_myddf / T3.comm_target),'-') AS index_dc_myddf_rate -- 得分完成率 +FROM T3 +LEFT JOIN T4 +ON T3.comm_id = T4.comm_id +ORDER BY T4.index_dc_myddf DESC +${IF(left(fine_role,2)=="项目","", "*/")} + + + +-- 【片区项目投诉】 + + + +SELECT + ROW_NUMBER() OVER (ORDER BY tousu_incident_num ASC) AS 序号 + -- ,a.p_area as p_area + ,REPLACE(REPLACE(a.p_area,'片区', ''),'公司','') AS p_area + ,a.incident_ym as incident_ym + ,a.tousu_close_incident_num as tousu_close_incident_num +from +( + select + ${if(len(p_area) == 0,"organ_name","comm_name")} as p_area + , incident_ym + , SUM(IFNULL(tousu_incident_num,0)) AS tousu_incident_num + , SUM(IFNULL(tousu_close_incident_num,0)) AS tousu_close_incident_num + FROM dws_estate_incident_info_m + where incident_ym = '${REPLACE(p_ym,"-","")}' + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + ${IF(LEN(p_area)>0," and organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + GROUP BY ${if(len(p_area) == 0,"organ_name","comm_name")},incident_ym + having SUM(IFNULL(tousu_incident_num,0)) != 0 +)a +ORDER BY tousu_incident_num ASC + +-- 【片区项目投诉_倒数】 + + + +select + t.* +from + ( + SELECT + ROW_NUMBER() OVER (ORDER BY tousu_incident_num ASC) AS rk + -- ,a.p_area as p_area + ,REPLACE(REPLACE(a.p_area,'片区', ''),'公司','') AS p_area + ,a.incident_ym as incident_ym + ,a.tousu_close_incident_num as tousu_close_incident_num + from( + select + ${if(len(p_area) == 0,"organ_name","comm_name")} as p_area + , incident_ym + , SUM(IFNULL(tousu_incident_num,0)) AS tousu_incident_num + , SUM(IFNULL(tousu_close_incident_num,0)) AS tousu_close_incident_num + FROM dws_estate_incident_info_m + where incident_ym = '${REPLACE(p_ym,"-","")}' + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + ${IF(LEN(p_area)>0," and organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + GROUP BY ${if(len(p_area) == 0,"organ_name","comm_name")},incident_ym + having SUM(IFNULL(tousu_incident_num,0)) != 0 + ) a + ORDER BY tousu_incident_num DESC + limit 3 + )t +order by rk + + +SELECT +REPLACE(REPLACE(t.p_area,'片区', ''),'公司','') AS p_area +,t.户数 AS 户数 +FROM +( + SELECT + ${if(len(p_area) == 0,"T1.organ_name","T1.comm_name")} as p_area + ,count(T2.RoomName) AS 户数 + FROM dim_organ_mapping T1 + INNER JOIN dim_room_d T2 + ON T1.comm_id = T2.CommID + ${IF(LEN(p_area)>0," where organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + GROUP BY ${if(len(p_area) == 0,"T1.organ_name","T1.comm_name")} +)t + + +-- 【report_当年客满得分情况_按月】 + + + + +/*有片区求各项目的内外盘得分、目标*/ +/*无片区求各片区的得分、目标*/ +WITH T1 AS ( + /*各片区得分目标*/ + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '1月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '2月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '3月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '4月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '5月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '6月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '7月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '8月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '9月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '10月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '11月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '12月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + + ),T2 AS ( + /*各片区得分*/ + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '1月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '一季度' + AND yr = '${LEFT(p_ym,4)}' +-- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '1月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '一季度' + AND yr = '${LEFT(p_ym,4)}' +-- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '2月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '一季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '3月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '一季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '4月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '二季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '5月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '二季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '6月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '二季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '7月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '三季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '8月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '三季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '9月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '三季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '10月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '四季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '11月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '四季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '12月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '四季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + + ),T3 AS ( + /*各项目目标*/ + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '1月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '2月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '3月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '4月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '5月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '6月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '7月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '8月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '9月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '10月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '11月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '12月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + + ),T4 AS ( + /*各项目得分*/ + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '1月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '一季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '2月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '一季度' + AND yr = '${LEFT(p_ym,4)}' +-- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '3月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '一季度' + AND yr = '${LEFT(p_ym,4)}' +-- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '4月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '二季度' + AND yr = '${LEFT(p_ym,4)}' +-- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '5月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '二季度' + AND yr = '${LEFT(p_ym,4)}' +-- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '6月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '二季度' + AND yr = '${LEFT(p_ym,4)}' +-- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '7月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '三季度' + AND yr = '${LEFT(p_ym,4)}' +-- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '8月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '三季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '9月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '三季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '10月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '四季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '11月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '四季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '12月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '四季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + ) +SELECT + A.维度, + A.目标, + B.得分, + A.m +FROM ${IF(LEN(p_area)>0,"T3 AS A", "T1 AS A")} +LEFT JOIN ${IF(LEN(p_area)>0,"T4 AS B", "T2 AS B")} +ON A.维度 = B.维度 +and A.m = B.m +-- and A.yr = B.yr +WHERE A.目标 > 0 + AND B.得分 > 0 + ${if(left(fine_role,2)=="项目","and A.维度 = '"+GETUSERDEPARTMENTS(3)+"'","")} + + + + + + + + + +-- 片区维度 +select +a.ym as ym -- 年月 +,a.organ_code as organ_code -- 片区ID +,a.organ_name as organ_name -- 片区名称 +,if(b.index_dq_target =0,0,a.cu_collection_rate / b.index_dq_target) as cu_coll_complete_rate -- 物业费当期收缴率 +,if(b.index_wq_target = 0,0,a.pr_collection_rate / b.index_wq_target) as pr_coll_complete_rate -- 物业费往期收缴率 +,a.collection_rate as collection_rate-- 物业费收缴率 +from +( + SELECT + + ym + ,organ_code + ,organ_name + ,sum(ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0)) / sum(ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0)) cu_collection_rate + ,sum((- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum(ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0)) pr_collection_rate + ,sum(ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0)+(- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum(ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0)+ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0)) collection_rate + from dwd_finance_fees_serial_d + where ParentCostCode = '0001' + -- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + -- ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_ym)>0," AND ym ='" + p_ym+ "'","")} + -- ${IF(LEN(p_area)>0,"group by organ_code, ym","group by ym")} + GROUP BY + ym + ,organ_code + ,organ_name +)a +left join +( + select + organ_code + ,organ_name + ,ym + ,index_dq_target -- 当期目标 + ,index_wq_target -- 往期目标 + from ods_finance_collection_target_area + -- ${IF(LEN(p_area)==0,"where organ_code = '5501'","")} + +)b +on a.ym = b.ym +AND a.organ_code = b.organ_code +-- ${IF(LEN(p_area)>0,"a.organ_code = b.organ_code and a.ym = b.ym", "a.ym = b.ym")} \ No newline at end of file diff --git a/finereport/kanban/pc/工程.sql b/finereport/kanban/pc/工程.sql index a062b25..65facee 100644 --- a/finereport/kanban/pc/工程.sql +++ b/finereport/kanban/pc/工程.sql @@ -319,4 +319,98 @@ FROM 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 ; \ No newline at end of file diff --git a/finereport/tianbao/3_property/1_各项目客户满意度得分.sql b/finereport/tianbao/3_property/1_各项目客户满意度得分.sql new file mode 100644 index 0000000..89e9201 --- /dev/null +++ b/finereport/tianbao/3_property/1_各项目客户满意度得分.sql @@ -0,0 +1,42 @@ +-- 【ds1】 + +SELECT + organ_name, + comm_name, + cycle, + index_myd_target AS 满意度目标, + index_dc_myddf AS 满意度得分, + index_dc_ybl AS 地产有效样本量, + index_dc_myl AS 地产满意量, + index_dc_myd AS 稳老综合满意度, + index_dc_qz AS 权重20, + index_wy_ybl AS 物业有效样本量, + index_wy_myl AS 物业满意量, + index_wy_myd AS 磨稳老物业满意度, + index_wy_qz AS 权重80 +FROM dw.ods_wuye_complaint +WHERE yr = '2024' + AND jd = '二季度' + AND ptype = '内盘' +; + + +SELECT + organ_name, + comm_name, + cycle, + index_myd_target AS 满意度目标, + index_dc_myddf AS 满意度得分, + index_dc_ybl AS 地产有效样本量, + index_dc_myl AS 地产满意量, + index_dc_myd AS 稳老综合满意度, + index_dc_qz AS 权重20, + index_wy_ybl AS 物业有效样本量, + index_wy_myl AS 物业满意量, + index_wy_myd AS 磨稳老物业满意度, + index_wy_qz AS 权重80 +FROM ods_wuye_complaint +WHERE yr = '${p_yr}' + AND jd = '${p_jd}' + AND ptype = '${p_type}' +; \ No newline at end of file diff --git a/finereport/xiazuan/2_operation/项目明细弹窗.sql b/finereport/xiazuan/2_operation/项目明细弹窗.sql index 4c0d7fe..8341526 100644 --- a/finereport/xiazuan/2_operation/项目明细弹窗.sql +++ b/finereport/xiazuan/2_operation/项目明细弹窗.sql @@ -5,100 +5,254 @@ -- 目 录: xianzuan>2_运营>项目明细弹窗.fvs -- **************************************** --- 【数据集: report_project】 --- 1. 财务 finance --- 2. 运营 operation --- 3. 物业 property --- 4. 工程 engine --- 5. 人力 5_manpower --- 6. 创新 6_innovation --- 7. 商业 7_business --- 8. 法务 8_legal -SELECT - -- ${if(len(p_area) == 0,"B.organ_name","B.comm_name")} as p_area - -- ,A.CommId AS CommId -- 项目id 可关联maping表 - -- ${if(len(p_area) == 0,",'-'",",A.ManageKindName")} as newManageKind - -- ,A.ManageKind AS ManageKind -- 管理性质 【项目归属】 - A.ManageKindName AS ManageKindName -- 管理性质名称 【项目归属】 - ,A.ContractArea / 10000 AS ContractArea -- 合同面积 【建筑面积】 - ,A.TakeOverArea / 10000 AS TakeOverArea -- 接管面积 【合约面积】 - ,A.ManageContractArea / 10000 AS ManageContractArea -- 管理口径合同面积 【在管面积】 - -- ${if(len(p_area) == 0,",'-'",",A.StateName")} as newStateName - ,A.StateName AS StateName -- 业态 【项目业态】 - ,C.room_num AS room_num -- 总户数 - -- ,A.Province AS Province -- 省 - -- ,A.City AS City -- 市 - -- ,A.County AS County -- 区 - ,B.organ_code AS organ_code -- erp片区id - ,B.organ_name AS organ_name -- erp片区名称 - -- ,B.comm_id AS -- erp项目id - ,B.comm_name AS comm_name -- erp项目名称 + +SELECT-- ${if(len(p_area) == 0,"B.organ_name","B.comm_name")} as p_area +-- ,A.CommId AS CommId -- 项目id 可关联maping表 +-- ${if(len(p_area) == 0,",'-'",",A.ManageKindName")} as newManageKind +-- ,A.ManageKind AS ManageKind -- 管理性质 【项目归属】 + A.ManageKindName AS ManageKindName -- 管理性质名称 【项目归属】 + , + A.Province, + A.City, + A.Citylevel, -- 城市级别 + A.ManageStage, -- 项目状态 + A.TakeOverTime, -- 交付时间 + A.CommFrom, -- 项目来源 + A.DevSubject, -- 项目开发商名称 + A.CommAddress, -- 项目地址 + CASE WHEN ProjectFloorPlan IS NULL OR JSON_EXTRACT(JSON_EXTRACT(cast(A.ProjectFloorPlan as JSON),'$[0]'),'$.FileName') IS NULL + THEN '否' + WHEN JSON_EXTRACT(JSON_EXTRACT(cast(A.ProjectFloorPlan as JSON),'$[0]'),'$.FileName') IS NOT NULL + THEN '是' + END AS IS_UPLOAD, -- 是否有上传项目平面图 -- 项目平面图 + (A.FloorArea + A.UndergroundArea ) AS TotalArea, -- 建筑总面积 + A.FloorArea, -- 地上面积 + A.UndergroundArea, -- 地下面积 + A.GreenArea, -- 绿化面积 + A.ContractTerm, + A.PropertyMgrEntrustType, + CASE + WHEN A.IsContractFiled = '1' THEN '是' + ELSE '否' + END AS 是否办理合同备案 , + A.ProjectDeliverySituation, + A.UnsoldParkingCount, + IF(A.PedEntrExitsCount=0 OR PedEntrExitsCount IS NULL ,'-',PedEntrExitsCount)as PedEntrExitsCount, + IF(A.CarEntrExitsCount=0 OR CarEntrExitsCount IS NULL ,'-',CarEntrExitsCount)as CarEntrExitsCount, + IF(A.MixedEntrExitsCount=0 OR MixedEntrExitsCount IS NULL ,'-',MixedEntrExitsCount)as MixedEntrExitsCount, + IF(A.GuardedEntrExitsCount=0 OR GuardedEntrExitsCount IS NULL ,'-',GuardedEntrExitsCount)as GuardedEntrExitsCount, + IF(A.MonitoringRoomCount=0 OR MonitoringRoomCount IS NULL ,'-',MonitoringRoomCount)as MonitoringRoomCount, + A.IsMonRoomMergedToGate, + A.ContractArea , -- 合同面积 【建筑面积】 + A.TakeOverArea , -- 接管面积 【合约面积】 + A.ManageContractArea ManageContractArea, -- 管理口径合同面积 【在管面积】 +-- ${if(len(p_area) == 0,",'-'",",A.StateName")} as newStateName + A.StateName AS StateName, -- 业态 【项目业态】 + A.ContractName, -- 合同类型 + A.GetMethod, -- 项目获取渠道 + A.ContractPartyName, -- 合同对方名称 + CASE + WHEN A.IsSetCommittee = '1' THEN '是' + ELSE '否' + END AS 是否成立委员会 , -- 是否已成立业主委员会 + A.CommitteeTime, -- 业委会成立时间 + A.ChargeMode, + CONCAT( + DATE_FORMAT(CommitteeTermEndDate, '%Y-%m-%d'), + ' 至 ', + DATE_FORMAT(CommitteeTermStartDate, '%Y-%m-%d') + ) AS 任职天数, -- 任职时间 + C.room_num AS room_num ,-- 总户数 +-- ,A.Province AS Province -- 省 +-- ,A.City AS City -- 市 +-- ,A.County AS County -- 区 + B.organ_code AS organ_code, -- erp片区id + B.organ_name AS organ_name, -- erp片区名称 +-- ,B.comm_id AS -- erp项目id + B.comm_name AS comm_name, -- erp项目名称 + D.`已售面积`, + D.`未售面积` , + E.`已售车位`, + F.`已交付户数`, + F.`已接房数`, + F.`正在装修户数`, + F.`已完成装修户数`, + F.`已完成装修未入住`, + F.`已完成装修已入住`,( + F.`已完成装修已入住` / F.`已交付户数` + ) AS 入住率,( + F.`已完成装修户数` / F.`已交付户数` + ) AS 装修率, + G.收费面积, -- 收费面积 + H.签约时间, + I.住宅高层, + I.住宅多层, + I.别墅, + I.联排物业服务费, + I.叠拼物业服务费, + I.洋房物业费, + I.公寓物业服务费, + I.商铺物业服务费, + I.写字楼物业服务费, + I.幼儿园物业服务费, + I.厂区物业服务费, + I.酒店物业服务费, + I.车位管理物业服务费, + I.车位月租费用 FROM - ( - select - CommId -- 项目id 可关联maping表 - ,ManageKind -- 管理性质 - ,ManageKindName -- 管理性质名称 - ,ContractArea -- 合同面积 合约面积 - ,ManageContractArea-- 管理口径合同面积 在管面积 - ,StateName -- 业态 项目业态 - ,TakeOverArea -- 接管面积 - ,Province -- 省 - ,City -- 市 - ,County -- 区 - from dw.dim_project_base_info_d -- 项目维度表 - )A - JOIN - ( + dw.dim_project_base_info_d A -- 项目维度表 + JOIN ( SELECT organ_code -- erp片区id - ,organ_name -- erp片区名称 - ,comm_id -- erp项目id - ,comm_name -- erp项目名称 - FROM dw.dim_organ_mapping -- 片区项目映射维度表 - where comm_id is not null and comm_name not like '%撤场%' and comm_name not like '%案场%' and comm_name not like '%禁用%' and length(comm_id) != 0 + , + organ_name -- erp片区名称 + , + comm_id -- erp项目id + , + comm_name -- erp项目名称 + + FROM + dw.dim_organ_mapping -- 片区项目映射维度表 + + WHERE + comm_id IS NOT NULL + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%禁用%' + AND length( comm_id ) != 0 GROUP BY organ_code -- erp片区id - ,organ_name -- erp片区名称 - ,comm_id -- erp项目id - ,comm_name -- erp项目名称 - )B - ON A.CommId = B.comm_id - LEFT JOIN - ( + , + organ_name -- erp片区名称 + , + comm_id -- erp项目id + , + comm_name -- erp项目名称 + + ) B ON A.CommId = B.comm_id + LEFT JOIN ( SELECT CommID, count( 1 ) AS room_num -- 项目对应房间数量 + FROM dw.dim_room_d GROUP BY CommID ) C ON A.CommId = C.CommID + LEFT JOIN ( SELECT - CommID - ,count(1) as room_num -- 项目对应房间数量 - FROM dw.dim_room_d + CommID, + SUM( CASE WHEN roomstate IN ( '1', '4', '9', '10', '5', '6' ) THEN buildarea ELSE 0 END ) AS 已售面积, + SUM( CASE WHEN roomstate = '2' THEN buildarea ELSE 0 END ) AS 未售面积 + FROM + dim_room_d GROUP BY CommID - )C - ON A.CommId = C.CommID - where 1 = 1 - ${IF(LEN(p_area)!=0," where t.organ_code IN ('"+JOINARRAY(p_area,"','")+"')","")} - - --- )t --- group by --- ${if(len(p_area) == 0,"t.organ_name","t.comm_name")} -- 片区/项目 --- -- ,t.organ_name -- erp片区名称 --- -- ,t.comm_name -- erp项目名称 --- ,${if(len(p_area) == 0,"'-'","t.ManageKindName")} -- 管理性质名称 --- ,${if(len(p_area) == 0,"'-'","t.StateName")} -- 业态 【项目业态】 -; - - - - - - --- 【筛选框数据集: dic_erp片区】 - - -SELECT DISTINCT - organ_code AS 片区id, - organ_name AS 片区名称 -FROM dim_organ_mapping -; - + ) D ON A.COMMID = D.COMMID + LEFT JOIN ( + SELECT + CommID, + SUM( CASE WHEN ParkingState IN ( '0001', '0003' ) THEN 1 ELSE 0 END ) AS 已售车位 + FROM + ods_erp_tb_hspr_parking_d + GROUP BY + CommID + ) E ON A.COMMID = E.COMMID + LEFT JOIN ( + SELECT + CommID, + SUM( CASE WHEN SaleState = '已售' THEN 1 ELSE 0 END ) AS 已交付户数, + SUM( CASE WHEN roomstate IN ( '4', '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS 已接房数, + SUM( CASE WHEN roomstate = '4' THEN 1 ELSE 0 END ) AS 正在装修户数, + SUM( CASE WHEN roomstate IN ( '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修户数, + SUM( CASE WHEN roomstate = '5' THEN 1 ELSE 0 END ) AS 已完成装修未入住, + SUM( CASE WHEN roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修已入住 + FROM + dim_room_d + GROUP BY + CommID + ) F ON A.COMMID = F.COMMID + LEFT JOIN ( SELECT + CommId, + SUM(CalcArea) AS 收费面积 + FROM dim_bind_cost_stan_detail_d + GROUP BY CommId ) G ON A.COMMID = G.COMMID + LEFT JOIN ( + SELECT commid,max(GetTime) AS 签约时间 FROM dim_project_base_info_d GROUP BY CommId + ) H ON A.COMMID = H.COMMID + LEFT JOIN ( + SELECT + A.CommId, + CASE + WHEN SUM(CASE WHEN B.CostName IN ('高层物业服务费', '电梯电费', '公共能耗费') THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName IN ('高层物业服务费', '电梯电费', '公共能耗费') THEN StanAmount ELSE 0 END) + END AS 住宅高层, + -- 住宅多层 + CASE + WHEN SUM(CASE WHEN B.CostName IN ('多层物业服务费', '公共能耗费') THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName IN ('多层物业服务费', '公共能耗费') THEN StanAmount ELSE 0 END) + END AS 住宅多层, + -- 别墅 + CASE + WHEN SUM(CASE WHEN B.CostName IN ('别墅物业服务费', '公共能耗费') THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName IN ('别墅物业服务费', '公共能耗费') THEN StanAmount ELSE 0 END) + END AS 别墅, + -- 联排物业服务费 + CASE + WHEN SUM(CASE WHEN B.CostName = '联排物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName = '联排物业服务费' THEN StanAmount ELSE 0 END) + END AS 联排物业服务费, + -- 叠拼物业服务费 + CASE + WHEN SUM(CASE WHEN B.CostName = '叠拼物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName = '叠拼物业服务费' THEN StanAmount ELSE 0 END) + END AS 叠拼物业服务费, + -- 洋房物业费 + CASE + WHEN SUM(CASE WHEN B.CostName = '洋房物业费' THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName = '洋房物业费' THEN StanAmount ELSE 0 END) + END AS 洋房物业费, + -- 公寓物业服务费 + CASE + WHEN SUM(CASE WHEN B.CostName = '公寓物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName = '公寓物业服务费' THEN StanAmount ELSE 0 END) + END AS 公寓物业服务费, + -- 商铺物业服务费 + CASE + WHEN SUM(CASE WHEN B.CostName = '商铺物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName = '商铺物业服务费' THEN StanAmount ELSE 0 END) + END AS 商铺物业服务费, + -- 写字楼物业服务费 + CASE + WHEN SUM(CASE WHEN B.CostName = '写字楼物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName = '写字楼物业服务费' THEN StanAmount ELSE 0 END) + END AS 写字楼物业服务费, + -- 幼儿园物业服务费 + CASE + WHEN SUM(CASE WHEN B.CostName = '幼儿园物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName = '幼儿园物业服务费' THEN StanAmount ELSE 0 END) + END AS 幼儿园物业服务费, + -- 厂区物业服务费 + CASE + WHEN SUM(CASE WHEN B.CostName = '厂区物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName = '厂区物业服务费' THEN StanAmount ELSE 0 END) + END AS 厂区物业服务费, + -- 酒店物业服务费 + CASE + WHEN SUM(CASE WHEN B.CostName = '酒店物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName = '酒店物业服务费' THEN StanAmount ELSE 0 END) + END AS 酒店物业服务费, + -- 车位管理物业服务费 + CASE + WHEN SUM(CASE WHEN B.CostName = '车位管理物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName = '车位管理物业服务费' THEN StanAmount ELSE 0 END) + END AS 车位管理物业服务费, + -- 车位月租费用 + CASE + WHEN SUM(CASE WHEN B.CostName = '车位月租' THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName = '车位月租' THEN StanAmount ELSE 0 END) + END AS 车位月租费用 + FROM + dim_cost_stand_d A + LEFT JOIN + (SELECT distinct COMMID, COSTID,COSTNAME FROM dim_costitem_d) B ON A.CommID = B.COMMID AND A.CostID = B.COSTID + GROUP BY + A.CommId + ) I ON A.COMMID = I.COMMID +where 1 = 1 + ${IF(LEN(p_area)!=0," and B.organ_code IN ('"+p_area+"')","")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} \ No newline at end of file From e2da7436b7bf02afcbff8887ccbc3e94e9a584c6 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Thu, 5 Sep 2024 09:02:49 +0800 Subject: [PATCH 21/89] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dw/dim/dim_project_base_info_d.sql | 127 ++++-- .../xiazuan/2_operation/项目明细弹窗.sql | 418 +++++++++--------- 2 files changed, 308 insertions(+), 237 deletions(-) diff --git a/dw/dim/dim_project_base_info_d.sql b/dw/dim/dim_project_base_info_d.sql index 68c9eff..1176e4a 100644 --- a/dw/dim/dim_project_base_info_d.sql +++ b/dw/dim/dim_project_base_info_d.sql @@ -1,26 +1,101 @@ -SELECT - c.CommId, - c.ManageKind, - case when c.ManageKind = '0001' then '项目内盘' - when c.ManageKind = '0002' then '项目外盘(全委)' - when c.ManageKind = '0003' then '项目外盘(合资)' - when c.ManageKind = '0004' then '案场内盘' - when c.ManageKind = '0005' then '案场外盘(全委)' - when c.ManageKind = '0006' then '案场外盘(合资)' - end ManageKindName, - I.ContractArea, - I.ManageContractArea, - COALESCE(( - SELECT SUM(COALESCE(TakeOverArea, 0)) - FROM ods_erp_tb_hspr_projecttakeoverdetail_d - WHERE IsDelete = 0 AND ParentId = I.ID - ), 0) AS TakeOverArea - , right(b.StateName,4) StateName - , b.Province - , b.City - , b.County -FROM ods_erp_tb_hspr_projecttakeoverinformation_d AS I - right join ods_erp_tb_hspr_projectbasicinfomation_d b - on i.ParentId = b.id - right join ods_erp_tb_hspr_community_d c - on b.CommId = c.CommId \ No newline at end of file +select + b.CommId + , case when b.CommKind = '0001' then '商住' + when b.CommKind = '0002' then '商办' + when b.CommKind = '0003' then '公建' + when b.CommKind = '0004' then '住宅' + when b.CommKind = '0005' then '商业' + when b.CommKind = '0006' then '酒店' + end StateName + , b.ManageKind + , case when b.ManageKind = '0001' then '项目内盘' + when b.ManageKind = '0002' then '项目外盘(全委)' + when b.ManageKind = '0003' then '项目外盘(合资)' + when b.ManageKind = '0004' then '案场内盘' + when b.ManageKind = '0005' then '案场外盘(全委)' + when b.ManageKind = '0006' then '案场外盘(合资)' + end ManageKindName + , b.Province + , b.City + , b.Borough County + , a.GetMethod + , a.GetTime + , a.ContractName + , a.FloorArea + , a.UndergroundArea + , a.GreenArea + , a.TakeOverArea + , a.ContractArea + , a.ManageContractArea + , a.ContractTerm + , a.ContractPartyName + , a.PropertyMgrEntrustType + , a.IsContractFiled + , a.ProjectDeliverySituation + , a.UnsoldParkingCount + , a.PedEntrExitsCount + , a.CarEntrExitsCount + , a.MixedEntrExitsCount + , a.TotalEntrExitsCount + , a.GuardedEntrExitsCount + , a.MonitoringRoomCount + , a.IsMonRoomMergedToGate + , a.commAddress + , a.CommFrom + , a.DevSubject + , a.TakeOverTime + , a.ManageStage + , a.ChargeMode + , a.IsSetCommittee + , a.CommitteeTime + , a.ProjectFloorPlan + , a.CityLevel + , a.CommitteeTermStartDate + , a.CommitteeTermEndDate +from ( + select + c.CommId + , right(StateName,4) StateName + , a.PropertyMgrEntrustType + , a.IsContractFiled + , a.ContractPartyName + , c.ProjectDeliverySituation + , c.UnsoldParkingCount + , c.PedEntrExitsCount + , c.CarEntrExitsCount + , c.MixedEntrExitsCount + , c.TotalEntrExitsCount + , c.GuardedEntrExitsCount + , c.MonitoringRoomCount + , c.IsMonRoomMergedToGate + , a.GetMethod + , a.GetTime + , a.ContractName + , a.FloorArea + , a.UndergroundArea + , a.GreenArea + , a.ContractTerm + , c.commAddress + , c.CommFrom + , c.DevSubject + , c.TakeOverTime + , c.ManageStage + , c.ChargeMode + , c.IsSetCommittee + , c.CommitteeTime + , c.ProjectFloorPlan + , c.CityLevel + , c.CommitteeTermStartDate + , c.CommitteeTermEndDate + , sum(TakeOverArea) TakeOverArea + , sum(ContractArea) ContractArea + , sum(ManageContractArea) ManageContractArea + from (select * from ods_erp_tb_hspr_projecttakeoverinformation_d where IsDelete = 0) a + left join (select TakeOverArea, ParentId from ods_erp_tb_hspr_projecttakeoverdetail_d WHERE IsDelete = 0) b + on a.id = b.ParentId + right join (select * from ods_erp_tb_hspr_projectbasicinfomation_d where IsDelete = 0) c + on a.ParentId = c.id + group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33 + ) a + right join (select * from ods_erp_tb_hspr_community_d where IsDelete = 0) b + on a.CommId = b.CommId \ No newline at end of file diff --git a/finereport/xiazuan/2_operation/项目明细弹窗.sql b/finereport/xiazuan/2_operation/项目明细弹窗.sql index 8341526..35694a5 100644 --- a/finereport/xiazuan/2_operation/项目明细弹窗.sql +++ b/finereport/xiazuan/2_operation/项目明细弹窗.sql @@ -5,254 +5,250 @@ -- 目 录: xianzuan>2_运营>项目明细弹窗.fvs -- **************************************** +SELECT + A.ManageKindName , -- 管理性质名称 【项目归属】 + A.Province,-- 省 + A.City,-- 市 + A.Citylevel,-- 城市级别 + A.ManageStage,-- 项目状态 + A.TakeOverTime,-- 交付时间 + A.CommFrom,-- 项目来源 + A.DevSubject,-- 项目开发商名称 + A.CommAddress,-- 项目地址 + CASE + WHEN ProjectFloorPlan IS NULL + OR JSON_EXTRACT( JSON_EXTRACT( cast( A.ProjectFloorPlan AS JSON ), '$[0]' ), '$.FileName' ) IS NULL THEN'否' + WHEN JSON_EXTRACT( JSON_EXTRACT( cast( A.ProjectFloorPlan AS JSON ), '$[0]' ), '$.FileName' ) IS NOT NULL THEN'是' + END AS IS_UPLOAD,-- 是否有上传项目平面图 -- 项目平面图 + ( A.FloorArea + A.UndergroundArea ) AS TotalArea,-- 建筑总面积 + A.FloorArea,-- 地上面积 + A.UndergroundArea,-- 地下面积 + A.GreenArea,-- 绿化面积 + A.ContractTerm, + A.PropertyMgrEntrustType, + CASE + WHEN A.IsContractFiled = '1' THEN'是' ELSE '否' + END AS 是否办理合同备案, + A.ProjectDeliverySituation, + A.UnsoldParkingCount, + IF( A.PedEntrExitsCount = 0 OR PedEntrExitsCount IS NULL, '-', PedEntrExitsCount ) AS PedEntrExitsCount, + IF( A.CarEntrExitsCount = 0 OR CarEntrExitsCount IS NULL, '-', CarEntrExitsCount ) AS CarEntrExitsCount, + IF( A.MixedEntrExitsCount = 0 OR MixedEntrExitsCount IS NULL, '-', MixedEntrExitsCount ) AS MixedEntrExitsCount, + IF( A.GuardedEntrExitsCount = 0 OR GuardedEntrExitsCount IS NULL, '-', GuardedEntrExitsCount ) AS GuardedEntrExitsCount, + IF( A.MonitoringRoomCount = 0 OR MonitoringRoomCount IS NULL, '-', MonitoringRoomCount ) AS MonitoringRoomCount, + -- TotalEntrExitsCount = PedEntrExitsCount + CarEntrExitsCount +MixedEntrExitsCount + IF( A.PedEntrExitsCount = 0 OR PedEntrExitsCount IS NULL, '-', PedEntrExitsCount ) + + IF( A.CarEntrExitsCount = 0 OR CarEntrExitsCount IS NULL, '-', CarEntrExitsCount ) + + IF( A.MixedEntrExitsCount = 0 OR MixedEntrExitsCount IS NULL, '-', MixedEntrExitsCount ) AS TotalEntrExitsCount, -SELECT-- ${if(len(p_area) == 0,"B.organ_name","B.comm_name")} as p_area --- ,A.CommId AS CommId -- 项目id 可关联maping表 --- ${if(len(p_area) == 0,",'-'",",A.ManageKindName")} as newManageKind --- ,A.ManageKind AS ManageKind -- 管理性质 【项目归属】 - A.ManageKindName AS ManageKindName -- 管理性质名称 【项目归属】 - , - A.Province, - A.City, - A.Citylevel, -- 城市级别 - A.ManageStage, -- 项目状态 - A.TakeOverTime, -- 交付时间 - A.CommFrom, -- 项目来源 - A.DevSubject, -- 项目开发商名称 - A.CommAddress, -- 项目地址 - CASE WHEN ProjectFloorPlan IS NULL OR JSON_EXTRACT(JSON_EXTRACT(cast(A.ProjectFloorPlan as JSON),'$[0]'),'$.FileName') IS NULL - THEN '否' - WHEN JSON_EXTRACT(JSON_EXTRACT(cast(A.ProjectFloorPlan as JSON),'$[0]'),'$.FileName') IS NOT NULL - THEN '是' - END AS IS_UPLOAD, -- 是否有上传项目平面图 -- 项目平面图 - (A.FloorArea + A.UndergroundArea ) AS TotalArea, -- 建筑总面积 - A.FloorArea, -- 地上面积 - A.UndergroundArea, -- 地下面积 - A.GreenArea, -- 绿化面积 - A.ContractTerm, - A.PropertyMgrEntrustType, - CASE - WHEN A.IsContractFiled = '1' THEN '是' - ELSE '否' - END AS 是否办理合同备案 , - A.ProjectDeliverySituation, - A.UnsoldParkingCount, - IF(A.PedEntrExitsCount=0 OR PedEntrExitsCount IS NULL ,'-',PedEntrExitsCount)as PedEntrExitsCount, - IF(A.CarEntrExitsCount=0 OR CarEntrExitsCount IS NULL ,'-',CarEntrExitsCount)as CarEntrExitsCount, - IF(A.MixedEntrExitsCount=0 OR MixedEntrExitsCount IS NULL ,'-',MixedEntrExitsCount)as MixedEntrExitsCount, - IF(A.GuardedEntrExitsCount=0 OR GuardedEntrExitsCount IS NULL ,'-',GuardedEntrExitsCount)as GuardedEntrExitsCount, - IF(A.MonitoringRoomCount=0 OR MonitoringRoomCount IS NULL ,'-',MonitoringRoomCount)as MonitoringRoomCount, - A.IsMonRoomMergedToGate, - A.ContractArea , -- 合同面积 【建筑面积】 - A.TakeOverArea , -- 接管面积 【合约面积】 - A.ManageContractArea ManageContractArea, -- 管理口径合同面积 【在管面积】 --- ${if(len(p_area) == 0,",'-'",",A.StateName")} as newStateName - A.StateName AS StateName, -- 业态 【项目业态】 - A.ContractName, -- 合同类型 - A.GetMethod, -- 项目获取渠道 - A.ContractPartyName, -- 合同对方名称 - CASE - WHEN A.IsSetCommittee = '1' THEN '是' - ELSE '否' - END AS 是否成立委员会 , -- 是否已成立业主委员会 - A.CommitteeTime, -- 业委会成立时间 - A.ChargeMode, - CONCAT( - DATE_FORMAT(CommitteeTermEndDate, '%Y-%m-%d'), - ' 至 ', - DATE_FORMAT(CommitteeTermStartDate, '%Y-%m-%d') - ) AS 任职天数, -- 任职时间 - C.room_num AS room_num ,-- 总户数 --- ,A.Province AS Province -- 省 --- ,A.City AS City -- 市 --- ,A.County AS County -- 区 - B.organ_code AS organ_code, -- erp片区id - B.organ_name AS organ_name, -- erp片区名称 --- ,B.comm_id AS -- erp项目id - B.comm_name AS comm_name, -- erp项目名称 - D.`已售面积`, - D.`未售面积` , - E.`已售车位`, - F.`已交付户数`, - F.`已接房数`, - F.`正在装修户数`, - F.`已完成装修户数`, - F.`已完成装修未入住`, - F.`已完成装修已入住`,( - F.`已完成装修已入住` / F.`已交付户数` - ) AS 入住率,( - F.`已完成装修户数` / F.`已交付户数` - ) AS 装修率, - G.收费面积, -- 收费面积 - H.签约时间, - I.住宅高层, - I.住宅多层, - I.别墅, - I.联排物业服务费, - I.叠拼物业服务费, - I.洋房物业费, - I.公寓物业服务费, - I.商铺物业服务费, - I.写字楼物业服务费, - I.幼儿园物业服务费, - I.厂区物业服务费, - I.酒店物业服务费, - I.车位管理物业服务费, - I.车位月租费用 + A.IsMonRoomMergedToGate, + A.ContractArea,-- 合同面积 【建筑面积】 + A.TakeOverArea,-- 接管面积 【合约面积】 + A.ManageContractArea ManageContractArea,-- 管理口径合同面积 【在管面积】 + A.StateName AS StateName,-- 业态 【项目业态】 + A.ContractName,-- 合同类型 + A.GetMethod,-- 项目获取渠道 + A.ContractPartyName,-- 合同对方名称 + CASE + WHEN A.IsSetCommittee = '1' THEN'是' ELSE '否' + END AS 是否成立委员会,-- 是否已成立业主委员会 + A.CommitteeTime,-- 业委会成立时间 + A.ChargeMode, + CONCAT( DATE_FORMAT( CommitteeTermEndDate, '%Y-%m-%d' ), ' 至 ', DATE_FORMAT( CommitteeTermStartDate, '%Y-%m-%d' ) ) AS 任职天数,-- 任职时间 + C.room_num AS room_num,-- 总户数 + B.organ_name AS organ_name,-- erp片区名称 + B.comm_name AS comm_name,-- erp项目名称 + C.`已售面积`, + C.`未售面积`, + D.`已售车位`, + C.`已交付户数`, + C.`已接房数`, + C.`正在装修户数`, + C.`已完成装修户数`, + C.`已完成装修未入住`, + C.`已完成装修已入住`, + (C.`已完成装修已入住` / C.`已交付户数` ) AS 入住率, + (C.`已完成装修户数` / C.`已交付户数` ) AS 装修率, + E.收费面积,-- 收费面积 + A.签约时间, + G.住宅高层, + G.住宅多层, + G.别墅, + G.联排物业服务费, + G.叠拼物业服务费, + G.洋房物业费, + G.公寓物业服务费, + G.商铺物业服务费, + G.写字楼物业服务费, + G.幼儿园物业服务费, + G.厂区物业服务费, + G.酒店物业服务费, + G.车位管理物业服务费, + G.车位月租费用 FROM - dw.dim_project_base_info_d A -- 项目维度表 - JOIN ( + ( SELECT - organ_code -- erp片区id - , - organ_name -- erp片区名称 - , - comm_id -- erp项目id - , - comm_name -- erp项目名称 - + T.* + ,max(T.GetTime) OVER(PARTITION BY T.CommId)AS 签约时间 FROM - dw.dim_organ_mapping -- 片区项目映射维度表 - - WHERE - comm_id IS NOT NULL + ( + SELECT + * + ,row_number() OVER(PARTITION BY CommId ORDER BY GetTime DESC) AS RK + FROM dw.dim_project_base_info_d -- 项目维度表 + )T + WHERE T.RK = 1 + ) A + JOIN + ( + SELECT + organ_code, -- erp片区id + organ_name, -- erp片区名称 + comm_id, -- erp项目id + comm_name -- erp项目名称 + FROM dw.dim_organ_mapping -- 片区项目映射维度表 + WHERE comm_id IS NOT NULL AND comm_name NOT LIKE '%撤场%' AND comm_name NOT LIKE '%案场%' AND comm_name NOT LIKE '%禁用%' AND length( comm_id ) != 0 + ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} GROUP BY - organ_code -- erp片区id - , - organ_name -- erp片区名称 - , - comm_id -- erp项目id - , + organ_code, -- erp片区id + organ_name, -- erp片区名称 + comm_id, -- erp项目id comm_name -- erp项目名称 - - ) B ON A.CommId = B.comm_id - LEFT JOIN ( SELECT CommID, count( 1 ) AS room_num -- 项目对应房间数量 - FROM dw.dim_room_d GROUP BY CommID ) C ON A.CommId = C.CommID - LEFT JOIN ( + )B + ON A.CommId = B.comm_id + LEFT JOIN + ( SELECT - CommID, + CommID + ,SUM(CASE WHEN roomstate <> 0 THEN 1 ELSE 0 END) AS room_num, -- 项目对应房间数量 SUM( CASE WHEN roomstate IN ( '1', '4', '9', '10', '5', '6' ) THEN buildarea ELSE 0 END ) AS 已售面积, - SUM( CASE WHEN roomstate = '2' THEN buildarea ELSE 0 END ) AS 未售面积 - FROM - dim_room_d - GROUP BY - CommID - ) D ON A.COMMID = D.COMMID - LEFT JOIN ( - SELECT - CommID, - SUM( CASE WHEN ParkingState IN ( '0001', '0003' ) THEN 1 ELSE 0 END ) AS 已售车位 - FROM - ods_erp_tb_hspr_parking_d - GROUP BY - CommID - ) E ON A.COMMID = E.COMMID - LEFT JOIN ( - SELECT - CommID, + SUM( CASE WHEN roomstate = '2' THEN buildarea ELSE 0 END ) AS 未售面积, SUM( CASE WHEN SaleState = '已售' THEN 1 ELSE 0 END ) AS 已交付户数, SUM( CASE WHEN roomstate IN ( '4', '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS 已接房数, SUM( CASE WHEN roomstate = '4' THEN 1 ELSE 0 END ) AS 正在装修户数, SUM( CASE WHEN roomstate IN ( '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修户数, SUM( CASE WHEN roomstate = '5' THEN 1 ELSE 0 END ) AS 已完成装修未入住, SUM( CASE WHEN roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修已入住 - FROM - dim_room_d + FROM dw.dim_room_d + GROUP BY CommID + )C + ON A.CommId = C.CommID + LEFT JOIN + ( + SELECT + CommID, + SUM( CASE WHEN ParkingState IN ( '0001', '0003' ) THEN 1 ELSE 0 END ) AS 已售车位 + FROM ods_erp_tb_hspr_parking_d GROUP BY CommID - ) F ON A.COMMID = F.COMMID - LEFT JOIN ( SELECT - CommId, - SUM(CalcArea) AS 收费面积 - FROM dim_bind_cost_stan_detail_d - GROUP BY CommId ) G ON A.COMMID = G.COMMID - LEFT JOIN ( - SELECT commid,max(GetTime) AS 签约时间 FROM dim_project_base_info_d GROUP BY CommId - ) H ON A.COMMID = H.COMMID - LEFT JOIN ( + )D + ON A.COMMID = D.COMMID + LEFT JOIN + ( + SELECT + A.CommId AS CommId + ,SUM(A.CalcArea ) AS 收费面积 + FROM + ( + SELECT + CommId + ,CalcArea + ,RoomID + FROM dim_bind_cost_stan_detail_d + WHERE RoomID <> 0 + GROUP BY + CommId + ,CalcArea + ,RoomID + )A + group BY + A.CommId + )E + ON A.COMMID = E.COMMID + LEFT JOIN + ( SELECT A.CommId, - CASE - WHEN SUM(CASE WHEN B.CostName IN ('高层物业服务费', '电梯电费', '公共能耗费') THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName IN ('高层物业服务费', '电梯电费', '公共能耗费') THEN StanAmount ELSE 0 END) - END AS 住宅高层, + IFNULL(group_concat(CASE WHEN B.CostName IN ('高层物业服务费', '电梯电费', '公共能耗费') THEN ROUND(ROUND(B.StanAmount,2),2) END),'-') AS 住宅高层, -- 住宅多层 - CASE - WHEN SUM(CASE WHEN B.CostName IN ('多层物业服务费', '公共能耗费') THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName IN ('多层物业服务费', '公共能耗费') THEN StanAmount ELSE 0 END) - END AS 住宅多层, + IFNULL(group_concat(CASE WHEN B.CostName IN ('多层物业服务费', '公共能耗费') THEN ROUND(B.StanAmount,2) END),'-') AS 住宅多层, -- 别墅 - CASE - WHEN SUM(CASE WHEN B.CostName IN ('别墅物业服务费', '公共能耗费') THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName IN ('别墅物业服务费', '公共能耗费') THEN StanAmount ELSE 0 END) - END AS 别墅, + IFNULL(group_concat(CASE WHEN B.CostName IN ('别墅物业服务费', '公共能耗费') THEN ROUND(B.StanAmount,2) END),'-') AS 别墅, -- 联排物业服务费 - CASE - WHEN SUM(CASE WHEN B.CostName = '联排物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName = '联排物业服务费' THEN StanAmount ELSE 0 END) - END AS 联排物业服务费, + IFNULL(group_concat(CASE WHEN B.CostName = '联排物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 联排物业服务费, -- 叠拼物业服务费 - CASE - WHEN SUM(CASE WHEN B.CostName = '叠拼物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName = '叠拼物业服务费' THEN StanAmount ELSE 0 END) - END AS 叠拼物业服务费, + IFNULL(group_concat(CASE WHEN B.CostName = '叠拼物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 叠拼物业服务费, -- 洋房物业费 - CASE - WHEN SUM(CASE WHEN B.CostName = '洋房物业费' THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName = '洋房物业费' THEN StanAmount ELSE 0 END) - END AS 洋房物业费, + IFNULL(group_concat(CASE WHEN B.CostName = '洋房物业费' THEN ROUND(B.StanAmount,2) END),'-') AS 洋房物业费, -- 公寓物业服务费 - CASE - WHEN SUM(CASE WHEN B.CostName = '公寓物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName = '公寓物业服务费' THEN StanAmount ELSE 0 END) - END AS 公寓物业服务费, + IFNULL(group_concat(CASE WHEN B.CostName = '公寓物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 公寓物业服务费, -- 商铺物业服务费 - CASE - WHEN SUM(CASE WHEN B.CostName = '商铺物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName = '商铺物业服务费' THEN StanAmount ELSE 0 END) - END AS 商铺物业服务费, + IFNULL(group_concat(CASE WHEN B.CostName = '商铺物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 商铺物业服务费, -- 写字楼物业服务费 - CASE - WHEN SUM(CASE WHEN B.CostName = '写字楼物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName = '写字楼物业服务费' THEN StanAmount ELSE 0 END) - END AS 写字楼物业服务费, + IFNULL(group_concat(CASE WHEN B.CostName = '写字楼物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 写字楼物业服务费, -- 幼儿园物业服务费 - CASE - WHEN SUM(CASE WHEN B.CostName = '幼儿园物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName = '幼儿园物业服务费' THEN StanAmount ELSE 0 END) - END AS 幼儿园物业服务费, + IFNULL(group_concat(CASE WHEN B.CostName = '幼儿园物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 幼儿园物业服务费, -- 厂区物业服务费 - CASE - WHEN SUM(CASE WHEN B.CostName = '厂区物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName = '厂区物业服务费' THEN StanAmount ELSE 0 END) - END AS 厂区物业服务费, + IFNULL(group_concat(CASE WHEN B.CostName = '厂区物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 厂区物业服务费, -- 酒店物业服务费 - CASE - WHEN SUM(CASE WHEN B.CostName = '酒店物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName = '酒店物业服务费' THEN StanAmount ELSE 0 END) - END AS 酒店物业服务费, + IFNULL(group_concat(CASE WHEN B.CostName = '酒店物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 酒店物业服务费, -- 车位管理物业服务费 - CASE - WHEN SUM(CASE WHEN B.CostName = '车位管理物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName = '车位管理物业服务费' THEN StanAmount ELSE 0 END) - END AS 车位管理物业服务费, + IFNULL(group_concat(CASE WHEN B.CostName IN('车位管理物业服务费','车位物业服务费') THEN ROUND(B.StanAmount,2) END),'-') AS 车位管理物业服务费, -- 车位月租费用 - CASE - WHEN SUM(CASE WHEN B.CostName = '车位月租' THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName = '车位月租' THEN StanAmount ELSE 0 END) - END AS 车位月租费用 + IFNULL(group_concat(CASE WHEN B.CostName = '车位月租' THEN ROUND(B.StanAmount,2) END),'-') AS 车位月租费用 FROM - dim_cost_stand_d A + ( + + SELECT + DISTINCT + CommID + ,CostID + ,StanID + FROM dim_bind_cost_stan_detail_d -- 绑定的收费标准明细 +-- WHERE CommID = '214330' + )A LEFT JOIN - (SELECT distinct COMMID, COSTID,COSTNAME FROM dim_costitem_d) B ON A.CommID = B.COMMID AND A.CostID = B.COSTID + ( + + SELECT + B1.CommID AS CommID + ,B1.COSTID AS COSTID + ,B1.StanID AS StanID + ,B1.StanAmount AS StanAmount + ,B2.COSTNAME AS COSTNAME + FROM + ( + SELECT + CommID + ,COSTID + ,StanID + ,StanAmount + FROM dim_cost_stand_d -- 小区收费标准 + WHERE StanAmount <> 0 + )B1 + LEFT JOIN + ( + + SELECT + distinct + COMMID + ,COSTID + ,COSTNAME + FROM dim_costitem_d -- 项目上的费用名称 + )B2 + ON B1.CommID = B2.COMMID + AND B1.CostID = B2.COSTID + )B + ON A.CommID = B.COMMID + AND A.CostID = B.COSTID + AND A.StanID = B.StanID GROUP BY A.CommId - ) I ON A.COMMID = I.COMMID -where 1 = 1 - ${IF(LEN(p_area)!=0," and B.organ_code IN ('"+p_area+"')","")} - ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} \ No newline at end of file + )G + ON A.COMMID = G.COMMID \ No newline at end of file From 7d3844d049334a38ec8339da699154d0c7002703 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Fri, 6 Sep 2024 10:44:20 +0800 Subject: [PATCH 22/89] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=90=88=E5=90=8C=E9=9D=A2=E7=A7=AF=E5=8F=96?= =?UTF-8?q?=E5=80=BC=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dw/dim/dim_project_base_info_d.sql | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/dw/dim/dim_project_base_info_d.sql b/dw/dim/dim_project_base_info_d.sql index 1176e4a..8bfb4a2 100644 --- a/dw/dim/dim_project_base_info_d.sql +++ b/dw/dim/dim_project_base_info_d.sql @@ -1,3 +1,8 @@ +-- ***************************** +-- 修改人: 杨坤安 +-- 修改日期: 2024-09-06 +-- 修改内容: 一个项目接管面积会有多个,先累加再关联 +-- ***************************** select b.CommId , case when b.CommKind = '0001' then '商住' @@ -90,8 +95,23 @@ from ( , sum(TakeOverArea) TakeOverArea , sum(ContractArea) ContractArea , sum(ManageContractArea) ManageContractArea - from (select * from ods_erp_tb_hspr_projecttakeoverinformation_d where IsDelete = 0) a - left join (select TakeOverArea, ParentId from ods_erp_tb_hspr_projecttakeoverdetail_d WHERE IsDelete = 0) b + from + ( + select + * + from ods_erp_tb_hspr_projecttakeoverinformation_d + where IsDelete = 0 + ) a + left join + ( + select + ParentId + ,SUM(TakeOverArea) AS TakeOverArea + from ods_erp_tb_hspr_projecttakeoverdetail_d + WHERE IsDelete = 0 + group by + ParentId + ) b on a.id = b.ParentId right join (select * from ods_erp_tb_hspr_projectbasicinfomation_d where IsDelete = 0) c on a.ParentId = c.id From 5435781b34e331fe50388a632ecb46ac66a91fb9 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Fri, 6 Sep 2024 20:18:58 +0800 Subject: [PATCH 23/89] =?UTF-8?q?=E7=89=A9=E4=B8=9A=E5=AE=A2=E6=BB=A1?= =?UTF-8?q?=E6=83=85=E5=86=B5=E3=80=81=E9=A1=B9=E7=9B=AE=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E8=A1=A8=E3=80=81=E5=B0=8F=E6=82=A6=E5=88=B0=E5=AE=B6=E5=AE=8C?= =?UTF-8?q?=E5=8D=95=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 1 + finereport/kanban/mobile/物业_mobile.sql | 338 ++++++++++- .../xiazuan/2_operation/项目明细弹窗.sql | 530 +++++++++++------- .../6_innovation/4_小悦到家服务销售明细.sql | 51 ++ 4 files changed, 713 insertions(+), 207 deletions(-) diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 65b33a7..b5ccf60 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -42,6 +42,7 @@ + diff --git a/finereport/kanban/mobile/物业_mobile.sql b/finereport/kanban/mobile/物业_mobile.sql index a609d42..acad5ff 100644 --- a/finereport/kanban/mobile/物业_mobile.sql +++ b/finereport/kanban/mobile/物业_mobile.sql @@ -251,6 +251,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT +DISTINCT +km_target +FROM ods_wuye_gszt +WHERE km_target IS NOT NULL +AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '1月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -262,6 +268,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '2月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -273,6 +285,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '3月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -284,6 +302,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '4月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -295,6 +319,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '5月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -306,6 +336,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '6月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -317,6 +353,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '7月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -328,6 +370,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '8月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -339,6 +387,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '9月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -350,6 +404,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '10月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -361,6 +421,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '11月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -372,6 +438,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '12月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -384,6 +456,12 @@ WITH T1 AS ( SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '1月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -392,11 +470,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '1月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -405,11 +489,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '2月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -418,11 +508,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '3月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -431,11 +527,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '4月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -444,11 +546,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '5月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -457,11 +565,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '6月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -470,11 +584,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '7月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -483,11 +603,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '8月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -496,11 +622,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '9月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -509,11 +641,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '10月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -522,11 +660,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '11月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -535,11 +679,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '12月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -548,13 +698,19 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz ),T3 AS ( /*各项目目标*/ SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '1月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -570,6 +726,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '2月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -585,6 +747,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '3月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -600,6 +768,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '4月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -615,6 +789,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '5月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -630,6 +810,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '6月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -645,6 +831,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '7月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -660,6 +852,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '8月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -675,6 +873,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '9月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -690,6 +894,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '10月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -705,6 +915,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '11月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -720,6 +936,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '12月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -737,6 +959,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '1月' AS m -- 月 FROM ods_wuye_complaint @@ -749,6 +977,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '2月' AS m -- 月 FROM ods_wuye_complaint @@ -761,6 +995,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '3月' AS m -- 月 FROM ods_wuye_complaint @@ -773,6 +1013,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '4月' AS m -- 月 FROM ods_wuye_complaint @@ -785,6 +1031,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '5月' AS m -- 月 FROM ods_wuye_complaint @@ -797,6 +1049,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '6月' AS m -- 月 FROM ods_wuye_complaint @@ -809,6 +1067,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '7月' AS m -- 月 FROM ods_wuye_complaint @@ -821,6 +1085,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '8月' AS m -- 月 FROM ods_wuye_complaint @@ -833,6 +1103,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '9月' AS m -- 月 FROM ods_wuye_complaint @@ -845,6 +1121,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '10月' AS m -- 月 FROM ods_wuye_complaint @@ -857,6 +1139,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '11月' AS m -- 月 FROM ods_wuye_complaint @@ -869,6 +1157,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '12月' AS m -- 月 FROM ods_wuye_complaint @@ -880,9 +1174,17 @@ WITH T1 AS ( ) SELECT A.维度, - A.目标, - B.得分, - A.m + -- A.目标, + A.total_target, + -- B.wl_yxybl, -- 有效样本量 + -- B.wl_myl, -- 地产满意量 + -- B.wl_qz, -- 地产权重 + -- B.mwl_yxybl, -- 有效样本量(总样本量) + -- B.mwl_myl, -- 物业满意量 + -- B.mwl_qz, -- 权重80% + -- B.得分, + A.m, + ((((sum(B.wl_myl) / sum(B.wl_yxybl)) * 0.2)) + ((sum(B.mwl_myl) / sum(B.mwl_yxybl)) * 0.8)) * 100 AS 新得分 FROM ${IF(LEN(p_area)>0,"T3 AS A", "T1 AS A")} LEFT JOIN ${IF(LEN(p_area)>0,"T4 AS B", "T2 AS B")} ON A.维度 = B.维度 @@ -891,9 +1193,7 @@ and A.m = B.m WHERE A.目标 > 0 AND B.得分 > 0 ${if(left(fine_role,2)=="项目","and A.维度 = '"+GETUSERDEPARTMENTS(3)+"'","")} - - - +GROUP BY A.维度,A.total_target, A.m diff --git a/finereport/xiazuan/2_operation/项目明细弹窗.sql b/finereport/xiazuan/2_operation/项目明细弹窗.sql index 35694a5..cdb153a 100644 --- a/finereport/xiazuan/2_operation/项目明细弹窗.sql +++ b/finereport/xiazuan/2_operation/项目明细弹窗.sql @@ -4,158 +4,158 @@ -- 功 能: 帆软明细报表-项目明细弹窗 -- 目 录: xianzuan>2_运营>项目明细弹窗.fvs -- **************************************** - +TRUNCATE TABLE dim_comm_base_info_d +INSERT INTO dim_comm_base_info_d SELECT - A.ManageKindName , -- 管理性质名称 【项目归属】 - A.Province,-- 省 - A.City,-- 市 - A.Citylevel,-- 城市级别 - A.ManageStage,-- 项目状态 - A.TakeOverTime,-- 交付时间 - A.CommFrom,-- 项目来源 - A.DevSubject,-- 项目开发商名称 - A.CommAddress,-- 项目地址 - CASE - WHEN ProjectFloorPlan IS NULL - OR JSON_EXTRACT( JSON_EXTRACT( cast( A.ProjectFloorPlan AS JSON ), '$[0]' ), '$.FileName' ) IS NULL THEN'否' - WHEN JSON_EXTRACT( JSON_EXTRACT( cast( A.ProjectFloorPlan AS JSON ), '$[0]' ), '$.FileName' ) IS NOT NULL THEN'是' - END AS IS_UPLOAD,-- 是否有上传项目平面图 -- 项目平面图 - ( A.FloorArea + A.UndergroundArea ) AS TotalArea,-- 建筑总面积 - A.FloorArea,-- 地上面积 - A.UndergroundArea,-- 地下面积 - A.GreenArea,-- 绿化面积 - A.ContractTerm, - A.PropertyMgrEntrustType, - CASE - WHEN A.IsContractFiled = '1' THEN'是' ELSE '否' - END AS 是否办理合同备案, - A.ProjectDeliverySituation, - A.UnsoldParkingCount, - IF( A.PedEntrExitsCount = 0 OR PedEntrExitsCount IS NULL, '-', PedEntrExitsCount ) AS PedEntrExitsCount, - IF( A.CarEntrExitsCount = 0 OR CarEntrExitsCount IS NULL, '-', CarEntrExitsCount ) AS CarEntrExitsCount, - IF( A.MixedEntrExitsCount = 0 OR MixedEntrExitsCount IS NULL, '-', MixedEntrExitsCount ) AS MixedEntrExitsCount, - IF( A.GuardedEntrExitsCount = 0 OR GuardedEntrExitsCount IS NULL, '-', GuardedEntrExitsCount ) AS GuardedEntrExitsCount, - IF( A.MonitoringRoomCount = 0 OR MonitoringRoomCount IS NULL, '-', MonitoringRoomCount ) AS MonitoringRoomCount, - - -- TotalEntrExitsCount = PedEntrExitsCount + CarEntrExitsCount +MixedEntrExitsCount - IF( A.PedEntrExitsCount = 0 OR PedEntrExitsCount IS NULL, '-', PedEntrExitsCount ) - + IF( A.CarEntrExitsCount = 0 OR CarEntrExitsCount IS NULL, '-', CarEntrExitsCount ) - + IF( A.MixedEntrExitsCount = 0 OR MixedEntrExitsCount IS NULL, '-', MixedEntrExitsCount ) AS TotalEntrExitsCount, - - A.IsMonRoomMergedToGate, - A.ContractArea,-- 合同面积 【建筑面积】 - A.TakeOverArea,-- 接管面积 【合约面积】 - A.ManageContractArea ManageContractArea,-- 管理口径合同面积 【在管面积】 - A.StateName AS StateName,-- 业态 【项目业态】 - A.ContractName,-- 合同类型 - A.GetMethod,-- 项目获取渠道 - A.ContractPartyName,-- 合同对方名称 - CASE - WHEN A.IsSetCommittee = '1' THEN'是' ELSE '否' - END AS 是否成立委员会,-- 是否已成立业主委员会 - A.CommitteeTime,-- 业委会成立时间 - A.ChargeMode, - CONCAT( DATE_FORMAT( CommitteeTermEndDate, '%Y-%m-%d' ), ' 至 ', DATE_FORMAT( CommitteeTermStartDate, '%Y-%m-%d' ) ) AS 任职天数,-- 任职时间 - C.room_num AS room_num,-- 总户数 - B.organ_name AS organ_name,-- erp片区名称 - B.comm_name AS comm_name,-- erp项目名称 - C.`已售面积`, - C.`未售面积`, - D.`已售车位`, - C.`已交付户数`, - C.`已接房数`, - C.`正在装修户数`, - C.`已完成装修户数`, - C.`已完成装修未入住`, - C.`已完成装修已入住`, - (C.`已完成装修已入住` / C.`已交付户数` ) AS 入住率, - (C.`已完成装修户数` / C.`已交付户数` ) AS 装修率, - E.收费面积,-- 收费面积 - A.签约时间, - G.住宅高层, - G.住宅多层, - G.别墅, - G.联排物业服务费, - G.叠拼物业服务费, - G.洋房物业费, - G.公寓物业服务费, - G.商铺物业服务费, - G.写字楼物业服务费, - G.幼儿园物业服务费, - G.厂区物业服务费, - G.酒店物业服务费, - G.车位管理物业服务费, - G.车位月租费用 + B.organ_code AS organ_code -- erp片区id + ,B.organ_name AS organ_name -- erp片区名称 + ,B.comm_id AS comm_id -- erp项目id + ,B.comm_name AS comm_name -- erp项目名称 + ,A.Province AS province -- 省 + ,A.City AS city -- 市 + ,A.Citylevel AS citylevel -- 城市级别 + ,A.StateName AS statename -- 业态 【项目业态】 + ,A.ProjectDeliverySituation AS projectdeliverysituation -- 项目交付情况 + ,C.sold_area AS sold_area -- 已售面积 + ,C.unsold_area AS unsold_area -- 未售面积 + ,D.sold_parking_num AS sold_parking_num -- 已售车位 + ,D.unsold_Parking_num AS unsold_parking_num -- 未售车位 + ,A.ManageStage AS managestage -- 项目状态 + ,A.TakeOverTime AS takeovertime -- 交付时间 + ,A.CommFrom AS commfrom -- 项目来源 + ,A.DevSubject AS devsubject -- 项目开发商名称 + ,A.CommAddress AS commaddress -- 项目地址 + ,A.IS_UPLOAD AS is_upload -- 是否有上传项目平面图 + ,(A.FloorArea + A.UndergroundArea ) AS totalarea -- 建筑总面积 + ,A.FloorArea AS floorarea -- 地上面积 + ,A.UndergroundArea AS undergroundarea -- 地下面积 + ,A.ContractArea AS contractarea -- 合约面积 + ,A.TakeOverArea AS takeoverarea -- 在管面积 + ,E.CalcArea AS CalcArea -- 收费面积 + ,A.GreenArea AS greenarea -- 绿化面积 + ,C.room_num AS room_num -- 总户数 + ,C.delivered_num AS delivered_num -- 已交付户数 + ,C.rece_num AS rece_num -- 已接房数 + ,C.fit_num AS fit_num -- 正在装修户数 + ,C.done_fit_num AS done_fit_num -- 已完成装修户数 + ,C.done_fit_no AS done_fit_no -- 已完成装修未入住 + ,C.done_fit_yes AS done_fit_yes -- 已完成装修已入住 + ,IF(C.delivered_num = 0,0,(C.done_fit_yes / C.delivered_num )) AS stay_rate -- 入住率 + ,if(C.delivered_num = 0,0,(C.done_fit_num / C.delivered_num )) AS fit_rate -- 装修率 + ,A.PedEntrExitsCount AS PedEntrExitsCount -- 人行出入口数量 + , A.CarEntrExitsCount AS CarEntrExitsCount -- 车行出入口数量 + ,A.MixedEntrExitsCount AS MixedEntrExitsCount -- 人车混行出入口数量 + ,A.PedEntrExitsCount + A.CarEntrExitsCount + A.MixedEntrExitsCount AS TotalEntrExitsCount -- 总出入口数量 + ,A.GuardedEntrExitsCount AS GuardedEntrExitsCount -- 有人值守出入口数量 + ,A.MonitoringRoomCount AS MonitoringRoomCount -- 独立监控室数量 + ,A.IsMonRoomMergedToGate AS ismonroommergedtogate -- 监控室是否合并至门岗 + ,A.ChargeMode AS ChargeMode -- 收费模式 + ,G.high_housing AS high_housing -- 住宅高层 + ,G.multi_housing AS multi_housing -- 住宅多层 + ,G.villa AS villa -- 别墅 + ,G.town_prope_fee AS town_prope_fee -- 联排物业服务费 + ,G.stacking_prope_fee AS stacking_prope_fee -- 叠拼物业服务费 + ,G.house_prope_fee AS house_prope_fee -- 洋房物业费 + ,G.apart_prope_fee AS apart_prope_fee -- 公寓物业服务费 + ,G.shop_prope_fee AS shop_prope_fee -- 商铺物业服务费 + ,G.office_prope_fee AS office_prope_fee -- 写字楼物业服务费 + ,G.kinder_prope_fee AS kinder_prope_fee -- 学校 + ,G.fact_prope_fee AS fact_prope_fee -- 公共建筑 + ,G.hotel_prope_fee AS hotel_prope_fee -- 酒店物业服务费 + ,G.manage_parking_fee AS manage_parking_fee -- 车位管理物业服务费 + ,G.month_parking_fee AS month_parking_fee -- 车位月租费用 + ,A.ContractName AS contractname -- 合同类型 + ,A.GetMethod AS getmethod -- 项目获取渠道 + ,A.sign_time AS sign_time -- 签约时间 + ,A.ContractTerm AS contractterm -- 合同期限 + ,A.ContractPartyName AS contractpartyname -- 合同对方名称 + ,A.PropertyMgrEntrustType AS propertymgrentrusttype -- 物业管理委托方类型 + ,A.is_contractfiled AS is_contractfiled -- 是否办理合同备案 + ,CASE WHEN A.IsSetCommittee = '1' + THEN'是' ELSE '否' + END AS is_committee -- 是否已成立业主委员会 + ,A.CommitteeTime AS CommitteeTime -- 业委会成立时间 + ,CONCAT(DATE_FORMAT(A.CommitteeTermEndDate, '%Y-%m-%d' ), ' 至 ', DATE_FORMAT(A.CommitteeTermStartDate, '%Y-%m-%d' )) AS service_day -- 任职时间 + ,A.ManageContractArea AS managecontractarea -- 管理口径合同面积 【在管面积】 + ,A.ManageKindName AS managekindname -- 管理性质名称 【项目归属】 FROM +( + SELECT + T.* + ,CASE WHEN T.ProjectFloorPlan IS NULL OR JSON_EXTRACT( JSON_EXTRACT(cast( T.ProjectFloorPlan AS JSON ), '$[0]' ), '$.FileName' ) IS NULL THEN'否' + WHEN JSON_EXTRACT( JSON_EXTRACT( cast( T.ProjectFloorPlan AS JSON ), '$[0]' ), '$.FileName' ) IS NOT NULL THEN'是' + END AS IS_UPLOAD + ,CASE WHEN T.IsContractFiled = '1' + THEN'是' ELSE '否' + END AS is_contractfiled -- 是否办理合同备案 + ,max(T.GetTime) OVER(PARTITION BY T.CommId)AS sign_time -- 签约时间 + FROM ( SELECT - T.* - ,max(T.GetTime) OVER(PARTITION BY T.CommId)AS 签约时间 - FROM - ( - SELECT - * - ,row_number() OVER(PARTITION BY CommId ORDER BY GetTime DESC) AS RK - FROM dw.dim_project_base_info_d -- 项目维度表 - )T - WHERE T.RK = 1 - ) A - JOIN - ( - SELECT + * + ,row_number() OVER(PARTITION BY CommId ORDER BY GetTime DESC) AS RK + FROM dw.dim_project_base_info_d -- 项目维度表 + )T + WHERE T.RK = 1 +) A +JOIN +( + SELECT organ_code, -- erp片区id organ_name, -- erp片区名称 comm_id, -- erp项目id comm_name -- erp项目名称 - FROM dw.dim_organ_mapping -- 片区项目映射维度表 - WHERE comm_id IS NOT NULL - AND comm_name NOT LIKE '%撤场%' - AND comm_name NOT LIKE '%案场%' - AND comm_name NOT LIKE '%禁用%' - AND length( comm_id ) != 0 - ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} - ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} - GROUP BY - organ_code, -- erp片区id - organ_name, -- erp片区名称 - comm_id, -- erp项目id - comm_name -- erp项目名称 - )B - ON A.CommId = B.comm_id - LEFT JOIN - ( + FROM dw.dim_organ_mapping -- 片区项目映射维度表 + WHERE comm_id IS NOT NULL + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%禁用%' + AND length( comm_id ) != 0 + -- ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} + -- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + GROUP BY + organ_code, -- erp片区id + organ_name, -- erp片区名称 + comm_id, -- erp项目id + comm_name -- erp项目名称 +)B +ON A.CommId = B.comm_id +LEFT JOIN +( SELECT CommID - ,SUM(CASE WHEN roomstate <> 0 THEN 1 ELSE 0 END) AS room_num, -- 项目对应房间数量 - SUM( CASE WHEN roomstate IN ( '1', '4', '9', '10', '5', '6' ) THEN buildarea ELSE 0 END ) AS 已售面积, - SUM( CASE WHEN roomstate = '2' THEN buildarea ELSE 0 END ) AS 未售面积, - SUM( CASE WHEN SaleState = '已售' THEN 1 ELSE 0 END ) AS 已交付户数, - SUM( CASE WHEN roomstate IN ( '4', '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS 已接房数, - SUM( CASE WHEN roomstate = '4' THEN 1 ELSE 0 END ) AS 正在装修户数, - SUM( CASE WHEN roomstate IN ( '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修户数, - SUM( CASE WHEN roomstate = '5' THEN 1 ELSE 0 END ) AS 已完成装修未入住, - SUM( CASE WHEN roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修已入住 + ,SUM(CASE WHEN roomstate <> 0 THEN 1 ELSE 0 END) AS room_num -- 项目对应房间数量 + ,SUM(CASE WHEN roomstate IN ( '1', '4', '9', '10', '5', '6' ) THEN buildarea ELSE 0 END ) AS sold_area -- 已售面积 + ,SUM(CASE WHEN roomstate = '2' THEN buildarea ELSE 0 END ) AS unsold_area -- 未售面积 + ,SUM(CASE WHEN roomstate NOT IN('0','2') THEN 1 ELSE 0 END ) AS delivered_num -- 已交付户数 + ,SUM(CASE WHEN roomstate IN ( '4', '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS rece_num -- 已接房数 + ,SUM(CASE WHEN roomstate = '4' THEN 1 ELSE 0 END ) AS fit_num -- 正在装修户数 + ,SUM(CASE WHEN roomstate IN ( '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS done_fit_num -- 已完成装修户数 + ,SUM(CASE WHEN roomstate = '5' THEN 1 ELSE 0 END ) AS done_fit_no -- 已完成装修未入住 + ,SUM(CASE WHEN roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS done_fit_yes -- 已完成装修已入住 FROM dw.dim_room_d GROUP BY CommID - )C +)C ON A.CommId = C.CommID LEFT JOIN ( SELECT - CommID, - SUM( CASE WHEN ParkingState IN ( '0001', '0003' ) THEN 1 ELSE 0 END ) AS 已售车位 + CommID + ,SUM( CASE WHEN ParkingState IN ( '0001', '0003' ) THEN 1 ELSE 0 END ) AS sold_parking_num -- 已售车位 + ,SUM(CASE WHEN ParkingState IN ( '0002', '0004' ) THEN 1 ELSE 0 END) AS unsold_Parking_num -- 未售车位 FROM ods_erp_tb_hspr_parking_d + WHERE IsDelete = '0' GROUP BY CommID )D ON A.COMMID = D.COMMID - LEFT JOIN + LEFT JOIN ( SELECT A.CommId AS CommId - ,SUM(A.CalcArea ) AS 收费面积 + ,SUM(A.CalcArea ) AS CalcArea FROM - ( + ( SELECT CommId ,CalcArea @@ -166,89 +166,243 @@ FROM CommId ,CalcArea ,RoomID - )A - group BY - A.CommId + )A + GROUP BY + A.CommId )E ON A.COMMID = E.COMMID - LEFT JOIN + LEFT JOIN ( SELECT - A.CommId, - IFNULL(group_concat(CASE WHEN B.CostName IN ('高层物业服务费', '电梯电费', '公共能耗费') THEN ROUND(ROUND(B.StanAmount,2),2) END),'-') AS 住宅高层, - -- 住宅多层 - IFNULL(group_concat(CASE WHEN B.CostName IN ('多层物业服务费', '公共能耗费') THEN ROUND(B.StanAmount,2) END),'-') AS 住宅多层, + A.CommId + -- 住宅高层 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName IN ('高层物业服务费', '电梯电费', '公共能耗费') THEN ROUND(ROUND(B.StanAmount,2),2) END),',','\n'),'-') AS high_housing -- 住宅高层 + -- 住宅多层 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName IN ('多层物业服务费', '公共能耗费') THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS multi_housing -- 住宅多层 -- 别墅 - IFNULL(group_concat(CASE WHEN B.CostName IN ('别墅物业服务费', '公共能耗费') THEN ROUND(B.StanAmount,2) END),'-') AS 别墅, + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName IN ('别墅物业服务费', '公共能耗费') THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS villa -- 别墅 -- 联排物业服务费 - IFNULL(group_concat(CASE WHEN B.CostName = '联排物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 联排物业服务费, + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%联排%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS town_prope_fee -- 联排物业服务费 -- 叠拼物业服务费 - IFNULL(group_concat(CASE WHEN B.CostName = '叠拼物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 叠拼物业服务费, + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%叠拼%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS stacking_prope_fee -- 叠拼物业服务费 -- 洋房物业费 - IFNULL(group_concat(CASE WHEN B.CostName = '洋房物业费' THEN ROUND(B.StanAmount,2) END),'-') AS 洋房物业费, + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%洋房%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS house_prope_fee -- 洋房物业费 -- 公寓物业服务费 - IFNULL(group_concat(CASE WHEN B.CostName = '公寓物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 公寓物业服务费, + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%公寓%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS apart_prope_fee -- 公寓物业服务费 -- 商铺物业服务费 - IFNULL(group_concat(CASE WHEN B.CostName = '商铺物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 商铺物业服务费, + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%商铺%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS shop_prope_fee -- 商铺物业服务费 -- 写字楼物业服务费 - IFNULL(group_concat(CASE WHEN B.CostName = '写字楼物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 写字楼物业服务费, + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%写字楼%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS office_prope_fee -- 写字楼物业服务费 -- 幼儿园物业服务费 - IFNULL(group_concat(CASE WHEN B.CostName = '幼儿园物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 幼儿园物业服务费, + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%幼儿园%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS kinder_prope_fee-- 幼儿园物业服务费 -- 厂区物业服务费 - IFNULL(group_concat(CASE WHEN B.CostName = '厂区物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 厂区物业服务费, + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%厂区%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS fact_prope_fee -- 厂区物业服务费 -- 酒店物业服务费 - IFNULL(group_concat(CASE WHEN B.CostName = '酒店物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 酒店物业服务费, + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%酒店%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS hotel_prope_fee -- 酒店物业服务费 -- 车位管理物业服务费 - IFNULL(group_concat(CASE WHEN B.CostName IN('车位管理物业服务费','车位物业服务费') THEN ROUND(B.StanAmount,2) END),'-') AS 车位管理物业服务费, + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName IN('车位管理物业服务费','车位物业服务费') THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS manage_parking_fee -- 车位管理物业服务费 -- 车位月租费用 - IFNULL(group_concat(CASE WHEN B.CostName = '车位月租' THEN ROUND(B.StanAmount,2) END),'-') AS 车位月租费用 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName = '车位月租' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS month_parking_fee -- 车位月租费用 FROM - ( + ( SELECT DISTINCT - CommID - ,CostID - ,StanID + CommID + ,CostID + ,StanID FROM dim_bind_cost_stan_detail_d -- 绑定的收费标准明细 --- WHERE CommID = '214330' - )A - LEFT JOIN + -- WHERE CommID = '214330' + )A + LEFT JOIN + ( + SELECT + B1.CommID AS CommID + ,B1.COSTID AS COSTID + ,B1.StanID AS StanID + ,B1.StanAmount AS StanAmount + ,B2.COSTNAME AS COSTNAME + FROM ( - SELECT - B1.CommID AS CommID - ,B1.COSTID AS COSTID - ,B1.StanID AS StanID - ,B1.StanAmount AS StanAmount - ,B2.COSTNAME AS COSTNAME - FROM - ( - SELECT - CommID - ,COSTID - ,StanID - ,StanAmount - FROM dim_cost_stand_d -- 小区收费标准 - WHERE StanAmount <> 0 - )B1 - LEFT JOIN - ( - - SELECT - distinct - COMMID - ,COSTID - ,COSTNAME - FROM dim_costitem_d -- 项目上的费用名称 - )B2 - ON B1.CommID = B2.COMMID - AND B1.CostID = B2.COSTID - )B - ON A.CommID = B.COMMID - AND A.CostID = B.COSTID - AND A.StanID = B.StanID + CommID + ,COSTID + ,StanID + ,StanAmount + FROM dim_cost_stand_d -- 小区收费标准 + WHERE StanAmount <> 0 + )B1 + LEFT JOIN + ( + SELECT + distinct + COMMID + ,COSTID + ,COSTNAME + FROM dim_costitem_d -- 项目上的费用名称 + )B2 + ON B1.CommID = B2.COMMID + AND B1.CostID = B2.COSTID + )B + ON A.CommID = B.COMMID + AND A.CostID = B.COSTID + AND A.StanID = B.StanID GROUP BY - A.CommId + A.CommId )G - ON A.COMMID = G.COMMID \ No newline at end of file + ON A.COMMID = G.COMMID +; + + +DROP table dim_comm_base_info_d; + +SELECT count(1)from dim_comm_base_info_d; +CREATE TABLE dim_comm_base_info_d +( + organ_code VARCHAR(100) COMMENT 'erp片区id', + organ_name VARCHAR(100) COMMENT 'erp片区名称', + comm_id VARCHAR(100) COMMENT 'erp项目id', + comm_name VARCHAR(100) COMMENT 'erp项目名称', + province VARCHAR(100) COMMENT '省', + city VARCHAR(100) COMMENT '市', + citylevel VARCHAR(100) COMMENT '城市级别', + statename VARCHAR(100) COMMENT '业态 【项目业态】', + projectdeliverysituation VARCHAR(100) COMMENT '项目交付情况', + sold_area DECIMAL(16,4) COMMENT '已售面积', + unsold_area DECIMAL(16,4) COMMENT '未售面积', + sold_parking_num INT COMMENT '已售车位', + unsold_parking_num INT COMMENT '未售车位', + managestage VARCHAR(100) COMMENT '项目状态', + takeovertime VARCHAR(100) COMMENT '交付时间', + commfrom VARCHAR(100) COMMENT '项目来源', + devsubject VARCHAR(100) COMMENT '项目开发商名称', + commaddress VARCHAR(100) COMMENT '项目地址', + is_upload VARCHAR(100) COMMENT '是否有上传项目平面图', + totalarea DECIMAL(16,4) COMMENT '建筑总面积', + floorarea DECIMAL(16,4) COMMENT '地上面积', + undergroundarea DECIMAL(16,4) COMMENT '地下面积', + contractarea DECIMAL(16,4) COMMENT '合约面积', + takeoverarea DECIMAL(16,4) COMMENT '在管面积', + CalcArea DECIMAL(16,4) COMMENT '收费面积', + greenarea DECIMAL(16,4) COMMENT '绿化面积', + room_num INT COMMENT '总户数', + delivered_num INT COMMENT '已交付户数', + rece_num INT COMMENT '已接房数', + fit_num INT COMMENT '正在装修户数', + done_fit_num INT COMMENT '已完成装修户数', + done_fit_no INT COMMENT '已完成装修未入住', + done_fit_yes INT COMMENT '已完成装修已入住', + stay_rate DECIMAL(8,4) COMMENT '入住率', + fit_rate DECIMAL(8,4) COMMENT '装修率', + PedEntrExitsCount INT COMMENT '人行出入口数量', + CarEntrExitsCount INT COMMENT '车行出入口数量', + MixedEntrExitsCount INT COMMENT '人车混行出入口数量', + TotalEntrExitsCount INT COMMENT '总出入口数量', + GuardedEntrExitsCount INT COMMENT '有人值守出入口数量', + MonitoringRoomCount INT COMMENT '独立监控室数量', + ismonroommergedtogate VARCHAR(100) COMMENT '监控室是否合并至门岗', + ChargeMode VARCHAR(100) COMMENT '收费模式', + high_housing VARCHAR(100) COMMENT '住宅高层', + multi_housing VARCHAR(100) COMMENT '住宅多层', + villa VARCHAR(100) COMMENT '别墅', + town_prope_fee VARCHAR(100) COMMENT '联排物业服务费', + stacking_prope_fee VARCHAR(100) COMMENT '叠拼物业服务费', + house_prope_fee VARCHAR(100) COMMENT '洋房物业费', + apart_prope_fee VARCHAR(100) COMMENT '公寓物业服务费', + shop_prope_fee VARCHAR(100) COMMENT '商铺物业服务费', + office_prope_fee VARCHAR(100) COMMENT '写字楼物业服务费', + kinder_prope_fee VARCHAR(100) COMMENT '学校', + fact_prope_fee VARCHAR(100) COMMENT '公共建筑', + hotel_prope_fee VARCHAR(100) COMMENT '酒店物业服务费', + manage_parking_fee VARCHAR(100) COMMENT '车位管理物业服务费', + month_parking_fee VARCHAR(100) COMMENT '车位月租费用', + contractname VARCHAR(100) COMMENT '合同类型', + getmethod VARCHAR(100) COMMENT '项目获取渠道', + sign_time VARCHAR(100) COMMENT '签约时间', + contractterm VARCHAR(100) COMMENT '合同期限', + contractpartyname VARCHAR(100) COMMENT '合同对方名称', + propertymgrentrusttype VARCHAR(100) COMMENT '物业管理委托方类型', + is_contractfiled VARCHAR(100) COMMENT '是否办理合同备案', + is_committee VARCHAR(100) COMMENT '是否已成立业主委员会', + CommitteeTime VARCHAR(100) COMMENT '业委会成立时间', + service_day VARCHAR(100) COMMENT '任职时间', + managecontractarea DECIMAL(16,4) COMMENT '管理口径合同面积 【在管面积】', + managekindname VARCHAR(100) COMMENT '管理性质名称 【项目归属】' +)COMMENT = '项目基础信息表'; + + + + +SELECT + organ_name -- erp片区名称 + ,comm_name -- erp项目名称 + ,province -- 省 + ,city -- 市 + ,citylevel -- 城市级别 + ,statename -- 业态 【项目业态】 + ,projectdeliverysituation -- 项目交付情况 + ,sold_area -- 已售面积 + ,unsold_area -- 未售面积 + ,sold_parking_num -- 已售车位 + ,unsold_parking_num -- 未售车位 + ,managestage -- 项目状态 + ,left(takeovertime,10) as takeovertime -- 交付时间 + ,commfrom -- 项目来源 + ,devsubject -- 项目开发商名称 + ,commaddress -- 项目地址 + ,is_upload -- 是否有上传项目平面图 + ,totalarea -- 建筑总面积 + ,floorarea -- 地上面积 + ,undergroundarea -- 地下面积 + ,contractarea -- 合约面积 + ,takeoverarea -- 在管面积 + ,CalcArea -- 收费面积 + ,greenarea -- 绿化面积 + ,room_num -- 总户数 + ,delivered_num -- 已交付户数 + ,rece_num -- 已接房数 + ,fit_num -- 正在装修户数 + ,done_fit_num -- 已完成装修户数 + ,done_fit_no -- 已完成装修未入住 + ,done_fit_yes -- 已完成装修已入住 + ,stay_rate -- 入住率 + ,fit_rate -- 装修率 + ,PedEntrExitsCount -- 人行出入口数量 + ,CarEntrExitsCount -- 车行出入口数量 + ,MixedEntrExitsCount -- 人车混行出入口数量 + ,TotalEntrExitsCount -- 总出入口数量 + ,GuardedEntrExitsCount -- 有人值守出入口数量 + ,MonitoringRoomCount -- 独立监控室数量 + ,ismonroommergedtogate -- 监控室是否合并至门岗 + ,ChargeMode -- 收费模式 + ,high_housing -- 住宅高层 + ,multi_housing -- 住宅多层 + ,villa -- 别墅 + ,town_prope_fee -- 联排物业服务费 + ,stacking_prope_fee -- 叠拼物业服务费 + ,house_prope_fee -- 洋房物业费 + ,apart_prope_fee -- 公寓物业服务费 + ,shop_prope_fee -- 商铺物业服务费 + ,office_prope_fee -- 写字楼物业服务费 + ,kinder_prope_fee -- 学校 + ,fact_prope_fee -- 公共建筑 + ,hotel_prope_fee -- 酒店物业服务费 + ,manage_parking_fee -- 车位管理物业服务费 + ,month_parking_fee -- 车位月租费用 + ,contractname -- 合同类型 + ,getmethod -- 项目获取渠道 + ,left(sign_time,10) AS sign_time -- 签约时间 + ,contractterm -- 合同期限 + ,contractpartyname -- 合同对方名称 + ,propertymgrentrusttype -- 物业管理委托方类型 + ,is_contractfiled -- 是否办理合同备案 + ,is_committee -- 是否已成立业主委员会 + ,left(CommitteeTime,10) AS CommitteeTime -- 业委会成立时间 + ,left(service_day,10) AS service_day -- 任职时间 + ,managecontractarea -- 管理口径合同面积 【在管面积】 + ,managekindname -- 管理性质名称 【项目归属】' +FROM dim_comm_base_info_d +where 1 = 1 +${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} +${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + diff --git a/finereport/xiazuan/6_innovation/4_小悦到家服务销售明细.sql b/finereport/xiazuan/6_innovation/4_小悦到家服务销售明细.sql index e69de29..967396b 100644 --- a/finereport/xiazuan/6_innovation/4_小悦到家服务销售明细.sql +++ b/finereport/xiazuan/6_innovation/4_小悦到家服务销售明细.sql @@ -0,0 +1,51 @@ + +-- 【小悦到家完单率】 +select + ${IF(LEN(p_shop)>0,"d.comm_name","d.organ_name")} AS 分析维度 + ,count(*) order_num -- 订单数量 + ,sum(case when a.confirm_ym is null then 0 else 1 end) order_finish_num -- 订单完成数量 + ,IF(count(*) = 0,0,sum(case when a.confirm_ym is null then 0 else 1 end) / count(*)) AS order_finish_rate -- 完单率 +from +( + select + orderNo -- 订单号 + , date_format(createTime,'%Y-%m') create_ym -- 订单创建时间 + , date_format(confirmTime,'%Y-%m') confirm_ym -- 订单收货时间 + , vid -- 项目id + from dwd_innoveco_order_info_d -- 订单信息 +)a +inner join +( + select + orderNo + ,skuid + ,categoryLevel1 + ,goodsTitle -- 商品名称 + from dwd_innoveco_order_item_d -- 订单项信息 + where skuid in ('210627208100769','210627209100769','210627910100769','210625842100769','212609619100769','212609630100769','212603476100769','212603435100769','212603991100769','212603992100769','212603993100769','212300126100769','212298914100769','212299441100769','212299442100769','212299443100769','212299444100769','212297464100769','212297465100769','212296013100769','212314094100769','212314095100769','212314096100769','212328078100769','212328079100769','212294902100769','212292070100769','212287875100769','218885780100769','218884653100769','218884327100769','218692804100769','218691252100769','217847406100769','217479477100769') +) b +on a.orderNo = b.orderNo +left join +( + select + DISTINCT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,weim_comm_id + from dim_organ_mapping +) d +on a.vid = d.weim_comm_id +where 1=1 + ${IF(p_timetype = "本月","/*","")} + ${IF(LEN(p_startdate)>0,"AND a.create_ym >= '"+FORMAT(p_startdate,"yyyy-MM")+"'","")} + ${IF(LEN(p_enddate)>0,"AND a.create_ym <= '"+FORMAT(p_enddate,"yyyy-MM")+"'","")} + ${IF(p_timetype = "本月","*/","")} + ${IF(p_timetype = "本月","","/*")} +AND a.create_ym = DATE_FORMAT(NOW(),'%Y-%m') + ${IF(p_timetype = "本月","","*/")} + ${IF(LEN(p_area)>0," AND d.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_shop)>0," AND d.comm_id IN ('"+JOINARRAY(p_shop,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and d.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +GROUP BY 分析维度 \ No newline at end of file From 3563a5f10bae2a444836f9195f9905952584b7fe Mon Sep 17 00:00:00 2001 From: yangkunan Date: Mon, 9 Sep 2024 10:21:12 +0800 Subject: [PATCH 24/89] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xiazuan/2_operation/项目明细弹窗.sql | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/finereport/xiazuan/2_operation/项目明细弹窗.sql b/finereport/xiazuan/2_operation/项目明细弹窗.sql index cdb153a..d5ebda5 100644 --- a/finereport/xiazuan/2_operation/项目明细弹窗.sql +++ b/finereport/xiazuan/2_operation/项目明细弹窗.sql @@ -75,7 +75,7 @@ SELECT THEN'是' ELSE '否' END AS is_committee -- 是否已成立业主委员会 ,A.CommitteeTime AS CommitteeTime -- 业委会成立时间 - ,CONCAT(DATE_FORMAT(A.CommitteeTermEndDate, '%Y-%m-%d' ), ' 至 ', DATE_FORMAT(A.CommitteeTermStartDate, '%Y-%m-%d' )) AS service_day -- 任职时间 + ,CONCAT(DATE_FORMAT(A.CommitteeTermStartDate, '%Y-%m-%d' ) , ' 至 ',DATE_FORMAT(A.CommitteeTermEndDate, '%Y-%m-%d' )) AS service_day -- 任职时间 ,A.ManageContractArea AS managecontractarea -- 管理口径合同面积 【在管面积】 ,A.ManageKindName AS managekindname -- 管理性质名称 【项目归属】 FROM @@ -404,5 +404,17 @@ SELECT FROM dim_comm_base_info_d where 1 = 1 ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} -${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} - +-- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +AND CASE WHEN'${fine_username}' = 'WangXiaoLi0726' + THEN comm_name IN('【眉山】凯旋天域','【眉山】凯旋广场') + WHEN'${fine_username}' = 'SongPan1117' + THEN comm_name IN('【眉山】联想天府云城','【眉山】眉山联想叠云创新科技园三期') + WHEN'${fine_username}' = 'ZhuGuiQiong' + THEN comm_name IN('【眉山】江公丽景B区','【眉山】领地凯旋滨江') + WHEN'${fine_username}' = 'LiXin01' + THEN comm_name IN('【眉山】世代学府','【眉山】九号公馆') + WHEN'${fine_username}' = 'ChenYuHong0906' + THEN comm_name IN('【眉山】领地花屿二期','【眉山】领地凯旋国际公馆二期') + WHEN'${fine_username}' = 'WangJing' + THEN comm_name IN('【乐山】澜山悦','【乐山】领地蘭台府') + ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} \ No newline at end of file From 60cdd5b1ef26aa1873367ef4dff711bf942b4355 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 10 Sep 2024 14:19:56 +0800 Subject: [PATCH 25/89] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E8=AE=A1=E8=B4=B9?= =?UTF-8?q?=E9=9D=A2=E7=A7=AF=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- finereport/xiazuan/2_operation/项目明细弹窗.sql | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/finereport/xiazuan/2_operation/项目明细弹窗.sql b/finereport/xiazuan/2_operation/项目明细弹窗.sql index d5ebda5..2e9cbc6 100644 --- a/finereport/xiazuan/2_operation/项目明细弹窗.sql +++ b/finereport/xiazuan/2_operation/项目明细弹窗.sql @@ -133,7 +133,9 @@ LEFT JOIN ,SUM(CASE WHEN roomstate IN ( '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS done_fit_num -- 已完成装修户数 ,SUM(CASE WHEN roomstate = '5' THEN 1 ELSE 0 END ) AS done_fit_no -- 已完成装修未入住 ,SUM(CASE WHEN roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS done_fit_yes -- 已完成装修已入住 - FROM dw.dim_room_d + FROM dw.dim_room_d a + -- 排除掉房间表里房屋状态是未删除而在费用表里是删除的房子 + WHERE exists(SELECT 1 FROM dim_bind_cost_stan_detail_d B WHERE a.CommID = b.CommID AND A.RoomID = b.RoomID) GROUP BY CommID )C ON A.CommId = C.CommID @@ -167,6 +169,16 @@ LEFT JOIN ,CalcArea ,RoomID )A + JOIN + (-- 排除掉费用表里房屋状态是未删除而在房间表里是删除的房子 + SELECT + CommID + ,RoomID + FROM dw.dim_room_d + GROUP BY CommID,RoomID + )B + ON A.RoomID = B.RoomID + AND a.CommID = B.CommID GROUP BY A.CommId )E From 146838c3522aec52eabdc98109a1cae1adb481ac Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 10 Sep 2024 15:16:21 +0800 Subject: [PATCH 26/89] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E8=AE=A1=E8=B4=B9?= =?UTF-8?q?=E9=9D=A2=E7=A7=AF=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96=EF=BC=8C?= =?UTF-8?q?=E4=BB=8EODS=E5=8F=96=E6=95=B0=EF=BC=8C=E4=BB=A5=E6=88=BF?= =?UTF-8?q?=E9=97=B4=E8=A1=A8=E6=88=BF=E5=B1=8B=E7=8A=B6=E6=80=81=E4=B8=BA?= =?UTF-8?q?=E5=87=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xiazuan/2_operation/项目明细弹窗.sql | 373 +++++++++++++++--- 1 file changed, 325 insertions(+), 48 deletions(-) diff --git a/finereport/xiazuan/2_operation/项目明细弹窗.sql b/finereport/xiazuan/2_operation/项目明细弹窗.sql index 2e9cbc6..1312101 100644 --- a/finereport/xiazuan/2_operation/项目明细弹窗.sql +++ b/finereport/xiazuan/2_operation/项目明细弹窗.sql @@ -31,7 +31,7 @@ SELECT ,A.UndergroundArea AS undergroundarea -- 地下面积 ,A.ContractArea AS contractarea -- 合约面积 ,A.TakeOverArea AS takeoverarea -- 在管面积 - ,E.CalcArea AS CalcArea -- 收费面积 + ,C.CalcArea AS CalcArea -- 收费面积 ,A.GreenArea AS greenarea -- 绿化面积 ,C.room_num AS room_num -- 总户数 ,C.delivered_num AS delivered_num -- 已交付户数 @@ -123,20 +123,44 @@ ON A.CommId = B.comm_id LEFT JOIN ( SELECT - CommID - ,SUM(CASE WHEN roomstate <> 0 THEN 1 ELSE 0 END) AS room_num -- 项目对应房间数量 - ,SUM(CASE WHEN roomstate IN ( '1', '4', '9', '10', '5', '6' ) THEN buildarea ELSE 0 END ) AS sold_area -- 已售面积 - ,SUM(CASE WHEN roomstate = '2' THEN buildarea ELSE 0 END ) AS unsold_area -- 未售面积 - ,SUM(CASE WHEN roomstate NOT IN('0','2') THEN 1 ELSE 0 END ) AS delivered_num -- 已交付户数 - ,SUM(CASE WHEN roomstate IN ( '4', '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS rece_num -- 已接房数 - ,SUM(CASE WHEN roomstate = '4' THEN 1 ELSE 0 END ) AS fit_num -- 正在装修户数 - ,SUM(CASE WHEN roomstate IN ( '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS done_fit_num -- 已完成装修户数 - ,SUM(CASE WHEN roomstate = '5' THEN 1 ELSE 0 END ) AS done_fit_no -- 已完成装修未入住 - ,SUM(CASE WHEN roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS done_fit_yes -- 已完成装修已入住 - FROM dw.dim_room_d a - -- 排除掉房间表里房屋状态是未删除而在费用表里是删除的房子 - WHERE exists(SELECT 1 FROM dim_bind_cost_stan_detail_d B WHERE a.CommID = b.CommID AND A.RoomID = b.RoomID) - GROUP BY CommID + a.CommID AS CommID + ,SUM(CASE WHEN a.roomstate <> 0 THEN 1 ELSE 0 END) AS room_num -- 项目对应房间数量 + ,SUM(CASE WHEN a.roomstate IN ( '1', '4', '9', '10', '5', '6' ) THEN a.buildarea ELSE 0 END ) AS sold_area -- 已售面积 + ,SUM(CASE WHEN a.roomstate = '2' THEN a.buildarea ELSE 0 END ) AS unsold_area -- 未售面积 + ,SUM(CASE WHEN a.roomstate NOT IN('0','2') THEN 1 ELSE 0 END ) AS delivered_num -- 已交付户数 + ,SUM(CASE WHEN a.roomstate IN ( '4', '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS rece_num -- 已接房数 + ,SUM(CASE WHEN a.roomstate = '4' THEN 1 ELSE 0 END ) AS fit_num -- 正在装修户数 + ,SUM(CASE WHEN a.roomstate IN ( '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS done_fit_num -- 已完成装修户数 + ,SUM(CASE WHEN a.roomstate = '5' THEN 1 ELSE 0 END ) AS done_fit_no -- 已完成装修未入住 + ,SUM(CASE WHEN a.roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS done_fit_yes -- 已完成装修已入住 + ,SUM(b.CalcArea) AS CalcArea + FROM + ( + SELECT + * + FROM dw.dim_room_d + )a + LEFT JOIN + ( + SELECT + b1.CommId AS CommId + ,b1.RoomID AS RoomID + ,SUM(CalcArea) AS CalcArea + FROM + ( + SELECT + CommId + , CalcArea + , RoomID + FROM ods_erp_tb_hspr_coststansetting_d + WHERE RoomID <> '0' + GROUP BY CommId, CalcArea, RoomID + )b1 + GROUP BY b1.CommId,b1.RoomID + )b + ON a.CommID = b.CommId + AND a.RoomID = b.RoomID + GROUP BY CommID )C ON A.CommId = C.CommID LEFT JOIN @@ -152,38 +176,6 @@ LEFT JOIN )D ON A.COMMID = D.COMMID LEFT JOIN - ( - SELECT - A.CommId AS CommId - ,SUM(A.CalcArea ) AS CalcArea - FROM - ( - SELECT - CommId - ,CalcArea - ,RoomID - FROM dim_bind_cost_stan_detail_d - WHERE RoomID <> 0 - GROUP BY - CommId - ,CalcArea - ,RoomID - )A - JOIN - (-- 排除掉费用表里房屋状态是未删除而在房间表里是删除的房子 - SELECT - CommID - ,RoomID - FROM dw.dim_room_d - GROUP BY CommID,RoomID - )B - ON A.RoomID = B.RoomID - AND a.CommID = B.CommID - GROUP BY - A.CommId - )E - ON A.COMMID = E.COMMID - LEFT JOIN ( SELECT A.CommId @@ -429,4 +421,289 @@ AND CASE WHEN'${fine_username}' = 'WangXiaoLi0726' THEN comm_name IN('【眉山】领地花屿二期','【眉山】领地凯旋国际公馆二期') WHEN'${fine_username}' = 'WangJing' THEN comm_name IN('【乐山】澜山悦','【乐山】领地蘭台府') - ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} \ No newline at end of file + ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} + + +-- ====================================== +-- 数据集逻辑 +-- ====================================== + + +-- **************************************** +-- 创建人员: 杨坤安 +-- 创建日期: 2024-07-22 +-- 功 能: 帆软明细报表-项目明细弹窗 +-- 目 录: xianzuan>2_运营>项目明细弹窗.fvs +-- **************************************** +with one_to_many AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) + WHERE a.username = '${fine_username}' + ) +SELECT + A.ManageKindName , -- 管理性质名称 【项目归属】 + A.Province,-- 省 + A.City,-- 市 + A.Citylevel,-- 城市级别 + A.ManageStage,-- 项目状态 + A.TakeOverTime,-- 交付时间 + A.CommFrom,-- 项目来源 + A.DevSubject,-- 项目开发商名称 + A.CommAddress,-- 项目地址 + CASE + WHEN ProjectFloorPlan IS NULL + OR JSON_EXTRACT( JSON_EXTRACT( cast( A.ProjectFloorPlan AS JSON ), '$[0]' ), '$.FileName' ) IS NULL THEN'否' + WHEN JSON_EXTRACT( JSON_EXTRACT( cast( A.ProjectFloorPlan AS JSON ), '$[0]' ), '$.FileName' ) IS NOT NULL THEN'是' + END AS IS_UPLOAD,-- 是否有上传项目平面图 -- 项目平面图 + ( A.FloorArea + A.UndergroundArea ) AS TotalArea,-- 建筑总面积 + A.FloorArea,-- 地上面积 + A.UndergroundArea,-- 地下面积 + A.GreenArea,-- 绿化面积 + A.ContractTerm, + A.PropertyMgrEntrustType, + CASE + WHEN A.IsContractFiled = '1' THEN'是' ELSE '否' + END AS 是否办理合同备案, + A.ProjectDeliverySituation, + D.UnsoldParkingCount, + IF( A.PedEntrExitsCount = 0 OR PedEntrExitsCount IS NULL, '-', PedEntrExitsCount ) AS PedEntrExitsCount, + IF( A.CarEntrExitsCount = 0 OR CarEntrExitsCount IS NULL, '-', CarEntrExitsCount ) AS CarEntrExitsCount, + IF( A.MixedEntrExitsCount = 0 OR MixedEntrExitsCount IS NULL, '-', MixedEntrExitsCount ) AS MixedEntrExitsCount, + IF( A.GuardedEntrExitsCount = 0 OR GuardedEntrExitsCount IS NULL, '-', GuardedEntrExitsCount ) AS GuardedEntrExitsCount, + IF( A.MonitoringRoomCount = 0 OR MonitoringRoomCount IS NULL, '-', MonitoringRoomCount ) AS MonitoringRoomCount, + + -- TotalEntrExitsCount = PedEntrExitsCount + CarEntrExitsCount +MixedEntrExitsCount + IF( A.PedEntrExitsCount = 0 OR PedEntrExitsCount IS NULL, '-', PedEntrExitsCount ) + + IF( A.CarEntrExitsCount = 0 OR CarEntrExitsCount IS NULL, '-', CarEntrExitsCount ) + + IF( A.MixedEntrExitsCount = 0 OR MixedEntrExitsCount IS NULL, '-', MixedEntrExitsCount ) AS TotalEntrExitsCount, + + A.IsMonRoomMergedToGate, + A.ContractArea,-- 合同面积 【建筑面积】 + A.TakeOverArea,-- 接管面积 【合约面积】 + A.ManageContractArea ManageContractArea,-- 管理口径合同面积 【在管面积】 + A.StateName AS StateName,-- 业态 【项目业态】 + A.ContractName,-- 合同类型 + A.GetMethod,-- 项目获取渠道 + A.ContractPartyName,-- 合同对方名称 + CASE + WHEN A.IsSetCommittee = '1' THEN'是' ELSE '否' + END AS 是否成立委员会,-- 是否已成立业主委员会 + A.CommitteeTime,-- 业委会成立时间 + A.ChargeMode, + CONCAT(DATE_FORMAT(A.CommitteeTermStartDate, '%Y-%m-%d' ) , ' 至 ',DATE_FORMAT(A.CommitteeTermEndDate, '%Y-%m-%d' )) AS 任职天数,-- 任职时间 + C.room_num AS room_num,-- 总户数 + B.organ_name AS organ_name,-- erp片区名称 + B.comm_name AS comm_name,-- erp项目名称 + C.`已售面积`, + C.`未售面积`, + D.`已售车位`, + C.`已交付户数`, + C.`已接房数`, + C.`正在装修户数`, + C.`已完成装修户数`, + C.`已完成装修未入住`, + C.`已完成装修已入住`, + (C.`已完成装修已入住` / C.`已交付户数` ) AS 入住率, + (C.`已完成装修户数` / C.`已交付户数` ) AS 装修率, + C.收费面积,-- 收费面积 + A.签约时间, + G.住宅高层, + G.住宅多层, + G.别墅, + G.联排物业服务费, + G.叠拼物业服务费, + G.洋房物业费, + G.公寓物业服务费, + G.商铺物业服务费, + G.写字楼物业服务费, + G.幼儿园物业服务费, + G.厂区物业服务费, + G.酒店物业服务费, + G.车位管理物业服务费, + G.车位月租费用 +FROM + ( + SELECT + T.* + ,max(T.GetTime) OVER(PARTITION BY T.CommId)AS 签约时间 + FROM + ( + SELECT + * + ,row_number() OVER(PARTITION BY CommId ORDER BY GetTime DESC) AS RK + FROM dw.dim_project_base_info_d -- 项目维度表 + )T + WHERE T.RK = 1 + ) A + JOIN + ( + SELECT + organ_code, -- erp片区id + organ_name, -- erp片区名称 + comm_id, -- erp项目id + comm_name -- erp项目名称 + FROM dw.dim_organ_mapping -- 片区项目映射维度表 + WHERE comm_id IS NOT NULL + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%禁用%' + AND length( comm_id ) != 0 + + ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} +-- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}') IS NOT NULL + THEN comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} + END + + GROUP BY + organ_code, -- erp片区id + organ_name, -- erp片区名称 + comm_id, -- erp项目id + comm_name -- erp项目名称 + )B + ON A.CommId = B.comm_id + LEFT JOIN + ( + + SELECT + a.CommID + ,SUM(CASE WHEN a.roomstate <> 0 THEN 1 ELSE 0 END) AS room_num, -- 项目对应房间数量 + SUM( CASE WHEN a.roomstate IN ( '1', '4', '9', '10', '5', '6' ) THEN a.buildarea ELSE 0 END ) AS 已售面积, + SUM( CASE WHEN a.roomstate = '2' THEN a.buildarea ELSE 0 END ) AS 未售面积, + SUM( CASE WHEN a.roomstate NOT IN('0','2') THEN 1 ELSE 0 END ) AS 已交付户数, + SUM( CASE WHEN a.roomstate IN ( '4', '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS 已接房数, + SUM( CASE WHEN a.roomstate = '4' THEN 1 ELSE 0 END ) AS 正在装修户数, + SUM( CASE WHEN a.roomstate IN ( '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修户数, + SUM( CASE WHEN a.roomstate = '5' THEN 1 ELSE 0 END ) AS 已完成装修未入住, + SUM( CASE WHEN a.roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修已入住, + SUM(b.CalcArea) AS 收费面积 + FROM + ( + SELECT + * + FROM dw.dim_room_d + )a + LEFT JOIN + ( + SELECT + b1.CommId AS CommId + ,b1.RoomID AS RoomID + ,SUM(CalcArea) AS CalcArea + FROM + ( + SELECT + CommId + , CalcArea + , RoomID + FROM ods_erp_tb_hspr_coststansetting_d + WHERE RoomID <> '0' + GROUP BY CommId, CalcArea, RoomID + )b1 + GROUP BY b1.CommId,b1.RoomID + )b + ON a.CommID = b.CommId + AND a.RoomID = b.RoomID + GROUP BY CommID + )C + ON A.CommId = C.CommID + LEFT JOIN + ( + SELECT + CommID + ,SUM( CASE WHEN ParkingState IN ( '0001', '0003' ) THEN 1 ELSE 0 END ) AS 已售车位 + ,SUM(CASE WHEN ParkingState IN ( '0002', '0004' ) THEN 1 ELSE 0 END) AS UnsoldParkingCount + FROM ods_erp_tb_hspr_parking_d + WHERE IsDelete = '0' + GROUP BY + CommID + )D + ON A.COMMID = D.COMMID + LEFT JOIN + ( + SELECT + A.CommId + -- 住宅高层 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName IN ('高层物业服务费', '电梯电费', '公共能耗费') THEN ROUND(ROUND(B.StanAmount,2),2) END),',','\n'),'-') AS 住宅高层 + -- 住宅多层 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName IN ('多层物业服务费', '公共能耗费') THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 住宅多层 + -- 别墅 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName IN ('别墅物业服务费', '公共能耗费') THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 别墅 + -- 联排物业服务费 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%联排%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 联排物业服务费 + -- 叠拼物业服务费 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%叠拼%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 叠拼物业服务费 + -- 洋房物业费 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%洋房%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 洋房物业费 + -- 公寓物业服务费 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%公寓%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 公寓物业服务费 + -- 商铺物业服务费 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%商铺%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 商铺物业服务费 + -- 写字楼物业服务费 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%写字楼%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 写字楼物业服务费 + -- 幼儿园物业服务费 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%幼儿园%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 幼儿园物业服务费 + -- 厂区物业服务费 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%厂区%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 厂区物业服务费 + -- 酒店物业服务费 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%酒店%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 酒店物业服务费 + -- 车位管理物业服务费 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName IN('车位管理物业服务费','车位物业服务费') THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 车位管理物业服务费 + -- 车位月租费用 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName = '车位月租' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 车位月租费用 + + FROM + ( + + SELECT + DISTINCT + CommID + ,CostID + ,StanID + FROM dim_bind_cost_stan_detail_d -- 绑定的收费标准明细 +-- WHERE CommID = '214330' + )A + LEFT JOIN + ( + + SELECT + B1.CommID AS CommID + ,B1.COSTID AS COSTID + ,B1.StanID AS StanID + ,B1.StanAmount AS StanAmount + ,B2.COSTNAME AS COSTNAME + FROM + ( + SELECT + CommID + ,COSTID + ,StanID + ,StanAmount + FROM dim_cost_stand_d -- 小区收费标准 + WHERE StanAmount <> 0 + )B1 + LEFT JOIN + ( + + SELECT + distinct + COMMID + ,COSTID + ,COSTNAME + FROM dim_costitem_d -- 项目上的费用名称 + )B2 + ON B1.CommID = B2.COMMID + AND B1.CostID = B2.COSTID + )B + ON A.CommID = B.COMMID + AND A.CostID = B.COSTID + AND A.StanID = B.StanID + GROUP BY + A.CommId + )G + ON A.COMMID = G.COMMID +; \ No newline at end of file From 3efd8454e1e7e4e5cc5f08fbd0a58bcdbeecb53c Mon Sep 17 00:00:00 2001 From: yangkunan Date: Wed, 11 Sep 2024 11:34:29 +0800 Subject: [PATCH 27/89] =?UTF-8?q?=E8=B4=A2=E5=8A=A1=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E8=A1=A8=E6=94=B6=E7=BC=B4=E7=8E=87=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- finereport/xiazuan/1_finance/1_收缴下钻.sql | 57 +++++++++++---------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/finereport/xiazuan/1_finance/1_收缴下钻.sql b/finereport/xiazuan/1_finance/1_收缴下钻.sql index 0262f4d..c304e1d 100644 --- a/finereport/xiazuan/1_finance/1_收缴下钻.sql +++ b/finereport/xiazuan/1_finance/1_收缴下钻.sql @@ -8,48 +8,53 @@ FROM dim_organ_mapping WHERE 1=1 ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} - -- dic_片区 SELECT DISTINCT organ_code AS 片区id, organ_name AS 片区名称 -FROM dim_organ_mapping - +FROM dws_finance_fees_serial_m +where 1=1 and organ_code is not null + and organ_name not in ('东湖商管','领悦总部','演示机构') + ${if(GETUSERDEPARTMENTS(2)="领悦集团总部","","and organ_name = '"+GETUSERDEPARTMENTS(2)+"'")} -- dict_费用类型 -select distinct ParentCostCode, ParentCostName +select distinct ParentCostCode, case when ParentCostCode = '0008' then '代收代缴水电费' else ParentCostName end ParentCostName from dws_finance_fees_serial_m +where ParentCostCode in ('0001','0007','0008') order by ParentCostCode asc -- report_收缴率 -select - ${if(len(p_area) == 0,"a.organ_code code, a.organ_name name,","a.comm_id code, a.comm_name name,")} - a.ym, ParentCostCode, ParentCostName - , (pr_paid_cu_amt + cu_paid_cu_amt + pr_exempt_cu_amt + cu_exempt_cu_amt)/10000 cu_paid_amt - , (cu_receivable_amt + pr_exempt_cu_amt + cu_exempt_cu_amt)/10000 cu_receivable_amt - , (- cu_paid_pr_amt + cu_offset_pr_amt)/10000 pr_paid_amt - , (pr_total_receivable_amt + pr_total_received_amt + cu_early_exempt_pr_amt + cu_exempt_pr_amt)/10000 pr_receivable_amt - , case when a.ParentCostCode = '0001' then b.index_dq_target else 0 end cu_coll_rate_target - , case when a.ParentCostCode = '0001' then b.index_wq_target else 0 end pr_coll_rate_target - , case when a.ParentCostCode = '0008' then b.index_sd_target - when a.ParentCostCode = '0007' then b.index_dj_target else 0 end total_coll_rate_target -from dws_finance_fees_serial_m a - left join ods_finance_collection_target_area b - on a.organ_code = b.organ_code and a.ym = b.ym - left join ods_finance_collection_target_project c - on a.comm_id = c.comm_id and a.ym = c.ym -where 1=1 - ${if(len(p_startdate) == 0,"","and a.ym = '" + p_startdate + "'")} - ${if(len(p_feestype) == 0,"","and a.ParentCostCode = '" + p_feestype+ "'")} - ${if(len(p_area) == 0,"","and a.organ_code = '" + p_area+ "'")} -; - +select * from ( + select + ${if(len(p_area) == 0,"a.organ_code code, a.organ_name name,","a.comm_id code, a.comm_name name,")} + a.ym, ParentCostCode, ParentCostName + , (ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0))/10000 cu_paid_amt + , (ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0))/10000 cu_receivable_amt + , (- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))/10000 pr_paid_amt + , (ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0))/10000 pr_receivable_amt + , case when a.ParentCostCode = '0001' then b.index_dq_target else 0 end cu_coll_rate_target + , case when a.ParentCostCode = '0001' then b.index_wq_target else 0 end pr_coll_rate_target + , case when a.ParentCostCode = '0008' then b.index_sd_target + when a.ParentCostCode = '0007' then b.index_dj_target else 0 end total_coll_rate_target + from dws_finance_fees_serial_m a + left join ods_finance_collection_target_area b + on a.organ_code = b.organ_code and a.ym = b.ym + left join ods_finance_collection_target_project c + on a.comm_id = c.comm_id and a.ym = c.ym + where 1=1 and a.organ_code is not null + and a.organ_name not in ('东湖商管','领悦总部','演示机构') and a.comm_name not like '%天富%' + ${if(len(p_startdate) == 0,"","and a.ym = '" + p_startdate + "'")} + ${if(len(p_feestype) == 0,"","and a.ParentCostCode = '" + p_feestype+ "'")} + -- ${if(len(p_area) == 0,"","and a.organ_code = '" + p_area+ "'")} + ${IF(LEN(p_area)>0," AND a.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and a.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + ) a where not (cu_paid_amt=0 and cu_receivable_amt=0 and pr_paid_amt=0 and pr_receivable_amt = 0) -- report_收缴率目标 From 3283b3a131cdf26eb55ec517d6e78c404f2372fb Mon Sep 17 00:00:00 2001 From: yangkunan Date: Wed, 11 Sep 2024 11:36:32 +0800 Subject: [PATCH 28/89] =?UTF-8?q?=E6=94=B6=E7=BC=B4=E4=B8=8B=E9=92=BB?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- finereport/xiazuan/1_finance/1_收缴下钻.sql | 82 ++++++++++++++++----- 1 file changed, 65 insertions(+), 17 deletions(-) diff --git a/finereport/xiazuan/1_finance/1_收缴下钻.sql b/finereport/xiazuan/1_finance/1_收缴下钻.sql index c304e1d..6459101 100644 --- a/finereport/xiazuan/1_finance/1_收缴下钻.sql +++ b/finereport/xiazuan/1_finance/1_收缴下钻.sql @@ -27,6 +27,20 @@ where ParentCostCode in ('0001','0007','0008') order by ParentCostCode asc + +-- report_多经收缴情况 +SELECT + ${if(len(p_area) == 0,"organ_code code, organ_name name,","comm_id code, comm_name name,")} + `year_month`, index_type, index_receivable, index_receipts, index_not_receipts, collection_rate, update_user, update_time +FROM ods_caiwu_profit +where 1=1 +-- ${if(len(p_area) == 0,"","and organ_code = '" + p_area+ "'")} + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(len(p_startdate) == 0,"","and `year_month` = '" + replace(p_startdate,"-","") + "'")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + + + -- report_收缴率 @@ -58,13 +72,12 @@ select * from ( -- report_收缴率目标 - select organ_code code , organ_name name , ym - , index_dq_target - , index_wq_target + , ${IF(p_feestype = '0001',"index_dq_target",IF(p_feestype = "0007","''","''"))} AS index_dq_target + , ${IF(p_feestype = '0001',"index_wq_target",IF(p_feestype = "0007","''","''"))} AS index_wq_target , index_sd_target , index_dj_target , index_ac_target_dq @@ -78,8 +91,8 @@ select comm_id code , comm_name name , ym - , index_dq_target - , index_wq_target + , ${IF(p_feestype = '0001',"index_dq_target",IF(p_feestype = "0007","''","''"))} AS index_dq_target + , ${IF(p_feestype = '0001',"index_wq_target",IF(p_feestype = "0007","''","''"))} AS index_wq_target , index_sd_target , index_dj_target , index_ac_target_dq @@ -88,21 +101,56 @@ select from ods_finance_collection_target_project where 1=1 ${if(len(p_startdate) == 0,"","and ym = '" + p_startdate + "'")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + +-- report_物业费收缴总目标 + +select organ_code, ym, index_dq_target, index_wq_target from ods_finance_collection_target_area where organ_code = '5501' + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} -- report_中科目收缴率 select - b.organ_code, b.organ_name, b.comm_id, b.comm_name, ym - ${if(len(p_feestype) == 0,", ParentCostCode CostCode, ParentCostName CostName",", MiddleCostCode CostCode, MiddleCostName CostName")} - , (pr_paid_cu_amt + cu_paid_cu_amt + pr_exempt_cu_amt + cu_exempt_cu_amt)/10000 cu_paid_amt - , (cu_receivable_amt + pr_exempt_cu_amt + cu_exempt_cu_amt)/10000 cu_receivable_amt - , (- cu_paid_pr_amt + cu_offset_pr_amt)/10000 pr_paid_amt - , (pr_total_receivable_amt + pr_total_received_amt + cu_early_exempt_pr_amt + cu_exempt_pr_amt)/10000 pr_receivable_amt -from dwd_finance_fees_serial_d a - inner 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 + CostName + , sum((ifnull(cu_receivable_amt,0) - ifnull(cu_paid_amt,0)) + (ifnull(pr_receivable_amt,0) - ifnull(pr_paid_amt,0))) owed_amt +from ( + select + b.organ_code, b.organ_name, b.comm_id, b.comm_name, ym + ${if(len(p_feestype) == 0,", ParentCostCode CostCode, ParentCostName CostName",", MiddleCostCode CostCode, MiddleCostName CostName")} + , (ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0))/10000 cu_paid_amt + , (ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0))/10000 cu_receivable_amt + , (- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))/10000 pr_paid_amt + , (ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0))/10000 pr_receivable_amt + from dwd_finance_fees_serial_d a + left join( + select a.CommID comm_id, a.CommName comm_name, b.OrganCode organ_code, b.OrganName organ_name from ods_erp_tb_hspr_community_d a + left join ( + select * from ods_erp_tb_sys_organ_d + where length(OrganCode) = 4 + ) b + on left(a.OrganCode,4) = b.OrganCode + ) b + on a.commid = b.comm_id + where 1=1 + and ((a.ParentCostCode = '0008' and a.MiddleCostCode in ('00080001','00080002','00080003','00080004','00080005','00080006','00080007','00080008','00080017','00080018','00080019','00080022','00080023','00080024','00080027','00080028','00080032','00080035')) or a.ParentCostCode = '0001') + and a.organ_name not in ('东湖商管','领悦总部','演示机构') and a.comm_name not like '%天富%' + ${if(len(p_startdate) == 0,"","and ym = '" + p_startdate + "'")} + ${if(len(p_feestype) == 0,"","and ParentCostCode = '" + p_feestype+ "'")} + -- ${if(len(p_area) == 0,"","and b.organ_code = '" + p_area+ "'")} + ${IF(LEN(p_area)>0," AND b.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and a.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + ) a +where not (cu_paid_amt=0 and cu_receivable_amt=0 and pr_paid_amt=0 and pr_receivable_amt = 0) +group by CostName +union all +SELECT + index_type, sum(index_not_receipts) +FROM ods_caiwu_profit where 1=1 - ${if(len(p_startdate) == 0,"","and ym = '" + p_startdate + "'")} - ${if(len(p_feestype) == 0,"","and ParentCostCode = '" + p_feestype+ "'")} - ${if(len(p_area) == 0,"","and b.organ_code = '" + p_area+ "'")} \ No newline at end of file +-- ${if(len(p_area) == 0,"","and organ_code = '" + p_area+ "'")} + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(len(p_startdate) == 0,"","and `year_month` = '" + replace(p_startdate,"-","") + "'")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +group by index_type +order by owed_amt desc \ No newline at end of file From c521666f7c968d016b0392b5529f46c2e38a8fa2 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Fri, 20 Sep 2024 15:32:01 +0800 Subject: [PATCH 29/89] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E8=A1=A8=E6=94=B6=E8=B4=B9=E9=9D=A2=E7=A7=AF?= =?UTF-8?q?=E5=8F=96=E6=95=B0=E8=A1=A8=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/dataSources.xml | 2 +- .idea/sqldialects.xml | 1 + finereport/xiazuan/2_operation/项目明细弹窗.sql | 4 +++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml index 3a8ea2e..c12c47d 100644 --- a/.idea/dataSources.xml +++ b/.idea/dataSources.xml @@ -5,7 +5,7 @@ mysql.8 true com.mysql.cj.jdbc.Driver - jdbc:mysql://172.18.96.11:3306 + jdbc:mysql://172.18.96.20:3306 diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index b5ccf60..28009e2 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -8,6 +8,7 @@ + diff --git a/finereport/xiazuan/2_operation/项目明细弹窗.sql b/finereport/xiazuan/2_operation/项目明细弹窗.sql index 1312101..e781d8b 100644 --- a/finereport/xiazuan/2_operation/项目明细弹窗.sql +++ b/finereport/xiazuan/2_operation/项目明细弹窗.sql @@ -581,7 +581,9 @@ AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = ' SUM( CASE WHEN a.roomstate IN ( '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修户数, SUM( CASE WHEN a.roomstate = '5' THEN 1 ELSE 0 END ) AS 已完成装修未入住, SUM( CASE WHEN a.roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修已入住, - SUM(b.CalcArea) AS 收费面积 + -- SUM(b.CalcArea) AS 收费面积 + -- 2024-09-20更新取数新逻辑:石老师确认 收费面积从房间表取 + SUM(a.CalcArea) AS 收费面积 FROM ( SELECT From 561f0e2f19a48222aa32835420a60b7745555239 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Mon, 23 Sep 2024 10:27:44 +0800 Subject: [PATCH 30/89] =?UTF-8?q?=E9=A2=84=E8=AD=A6=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 2 + finereport/预警/片区预警数据.sql | 312 +++++++++++++++++++++++++++++++ finereport/预警/项目预警数据.sql | 246 ++++++++++++++++++++++++ finereport/预警/预警指标填报.sql | 17 ++ 4 files changed, 577 insertions(+) create mode 100644 finereport/预警/片区预警数据.sql create mode 100644 finereport/预警/项目预警数据.sql create mode 100644 finereport/预警/预警指标填报.sql diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 28009e2..53d4b7b 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -48,6 +48,8 @@ + + \ No newline at end of file diff --git a/finereport/预警/片区预警数据.sql b/finereport/预警/片区预警数据.sql new file mode 100644 index 0000000..1bd2ad6 --- /dev/null +++ b/finereport/预警/片区预警数据.sql @@ -0,0 +1,312 @@ +CREATE TABLE dim_early_warning_organ_d( + + organ_name VARCHAR(50) COMMENT '片区名称' + ,km_comple_rate DECIMAL(6,4) COMMENT '客满得分完成率' + ,ts_close_rate DECIMAL(6,4) COMMENT '投诉关闭率' + ,report_close_rate DECIMAL(6,4) COMMENT '报事关闭率' + ,cu_coll_comple_rate DECIMAL(6,4) COMMENT '当期收缴完成率' + ,pr_coll_comple_rate DECIMAL(6,4) COMMENT '往期收缴完成率' + ,total_coll_comple_rate DECIMAL(6,4) COMMENT '综合收缴完成率' + ,xing_revenue_rate DECIMAL(6,4) COMMENT '新零售收入完成率' + ,space_operate_rate DECIMAL(6,4) COMMENT '空间运营收入完成率' + ,meiju_revenue_rate DECIMAL(6,4) COMMENT '美居收入完成率(片区)' + ,rent_revenue_rate DECIMAL(6,4) COMMENT '资产租售收入完成率(片区)' + ,firth_revenue_rate DECIMAL(6,4) COMMENT '四大业务收入完成率(片区)' + ,payment_rate DECIMAL(6,4) COMMENT '回款率(片区)' + ,account_rate DECIMAL(6,4) COMMENT '销户率(片区)' + ,device_space_rate DECIMAL(6,4) COMMENT '设备空间巡查完成率' + ,water_electric_rate DECIMAL(6,4) COMMENT '水电费收缴率' +)COMMENT = '片区预警指标数据'; + + SELECT * FROM dim_early_warning_organ_d; +INSERT INTO dim_early_warning_organ_d +SELECT + T.organ_name AS organ_name + ,SUM(km_comple_rate) AS km_comple_rate -- 客满得分完成率 + ,SUM(ts_close_rate) AS ts_close_rate -- 投诉关闭率 + ,SUM(report_close_rate) AS report_close_rate -- 报事关闭率 + ,SUM(cu_coll_comple_rate) AS cu_coll_comple_rate -- 当期收缴完成率 + ,SUM(pr_coll_comple_rate) AS pr_coll_comple_rate -- 往期收缴完成率 + ,SUM(total_coll_comple_rate) AS total_coll_comple_rate -- 综合收缴完成率 + ,SUM(xing_revenue_rate) AS xing_revenue_rate -- 新零售收入完成率 + ,SUM(space_operate_rate) AS space_operate_rate -- 空间运营收入完成率 + ,SUM(meiju_revenue_rate) AS meiju_revenue_rate -- 美居收入完成率(片区) + ,SUM(rent_revenue_rate) AS rent_revenue_rate -- 资产租售收入完成率(片区) + ,SUM(firth_revenue_rate) AS firth_revenue_rate -- 四大业务收入完成率(片区) + ,SUM(payment_rate) AS payment_rate -- 回款率(片区) + ,SUM(account_rate) AS account_rate -- 销户率(片区) + ,SUM(device_space_rate) AS device_space_rate -- 设备空间巡查完成率 + ,SUM(water_electric_rate) AS water_electric_rate -- 水电费收缴率 +FROM + ( + SELECT + T1.organ_name AS organ_name + ,IF(IFNULL(T1.organ_target,0)=0,0,T2.index_mydf / T1.organ_target) AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS xing_revenue_rate -- 新零售收入完成率 + ,0 AS space_operate_rate -- 空间运营收入完成率 + ,0 AS meiju_revenue_rate -- 美居收入完成率(片区) + ,0 AS rent_revenue_rate -- 资产租售收入完成率(片区) + ,0 AS firth_revenue_rate -- 四大业务收入完成率(片区) + ,0 AS payment_rate -- 回款率(片区) + ,0 AS account_rate -- 销户率(片区) + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM + ( + SELECT + DISTINCT + organ_name -- 片区名称 + ,organ_target -- 目标得分 + FROM ods_wuye_satisfaction_target + WHERE yr = LEFT(CURRENT_DATE,4) + AND organ_target IS NOT NULL + )T1 + LEFT JOIN + ( + /*各片区得分*/ + SELECT + organ_name + ,SUM(IFNULL(index_mydf,0)) AS index_mydf + FROM ods_wuye_complaint_half_year + WHERE yr = LEFT(CURRENT_DATE,4) + AND t_quarter = '二季度' + -- AND t_quarter = CASE WHEN QUARTER(CURDATE()) = 1 THEN '一季度' + -- WHEN QUARTER(CURDATE()) = 2 THEN '二季度' + -- WHEN QUARTER(CURDATE()) = 3 THEN '三季度' + -- WHEN QUARTER(CURDATE()) = 4 THEN '四季度' END + -- + GROUP BY organ_name + )T2 + ON T1.organ_name = T2.organ_name + UNION ALL +-- 投诉关闭率/报事关闭率 + SELECT + organ_name AS organ_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,IF(IFNULL(sum(tousu_incident_num),0)=0,0,sum(tousu_close_incident_num) / sum(tousu_incident_num)) AS ts_close_rate -- 投诉关闭率 + ,IF(IFNULL(sum(incident_num),0)=0,0,sum(completed_incident_num - completed_not_close_incident_num) / sum(incident_num)) AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS xing_revenue_rate -- 新零售收入完成率 + ,0 AS space_operate_rate -- 空间运营收入完成率 + ,0 AS meiju_revenue_rate -- 美居收入完成率(片区) + ,0 AS rent_revenue_rate -- 资产租售收入完成率(片区) + ,0 AS firth_revenue_rate -- 四大业务收入完成率(片区) + ,0 AS payment_rate -- 回款率(片区) + ,0 AS account_rate -- 销户率(片区) + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM dws_estate_incident_info_m + WHERE incident_ym = date_format(current_date,'%Y%m') + GROUP BY + organ_name + UNION ALL +-- 收缴率 + SELECT + T1.organ_name AS organ_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,SUM(T1.cu_collection_rate) / SUM(T2.index_dq_target) AS cu_coll_comple_rate -- 当期收缴完成率 + ,SUM(T1.pr_collection_rate) / SUM(T2.index_wq_target) AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS xing_revenue_rate -- 新零售收入完成率 + ,0 AS space_operate_rate -- 空间运营收入完成率 + ,0 AS meiju_revenue_rate -- 美居收入完成率(片区) + ,0 AS rent_revenue_rate -- 资产租售收入完成率(片区) + ,0 AS firth_revenue_rate -- 四大业务收入完成率(片区) + ,0 AS payment_rate -- 回款率(片区) + ,0 AS account_rate -- 销户率(片区) + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM + ( + SELECT + organ_code + ,organ_name + ,sum(ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0)) / sum(ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0)) cu_collection_rate + ,sum((- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum(ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0)) pr_collection_rate + from dwd_finance_fees_serial_d + where ParentCostCode = '0001' + and ym = left(current_date,7) + and organ_name not in ('东湖商管','领悦总部','演示机构') + and comm_name not like '%天富%' + and comm_name not in('【喀什】融合国际新城','【贵阳】鹏淇·宏桥公园(撤场)') + GROUP BY + organ_code + ,organ_name + )T1 + LEFT JOIN + ( + select + organ_code + ,index_dq_target + ,index_wq_target + from ods_finance_collection_target_area + WHERE ym = left(current_date,7) + )T2 + ON T1.organ_code = T2.organ_code + GROUP BY + T1.organ_name + UNION ALL +-- 综合收缴率 + SELECT + T1.organ_name AS organ_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,SUM(T1.index_receipts) / SUM(T2.index_dj_target) AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS xing_revenue_rate -- 新零售收入完成率 + ,0 AS space_operate_rate -- 空间运营收入完成率 + ,0 AS meiju_revenue_rate -- 美居收入完成率(片区) + ,0 AS rent_revenue_rate -- 资产租售收入完成率(片区) + ,0 AS firth_revenue_rate -- 四大业务收入完成率(片区) + ,0 AS payment_rate -- 回款率(片区) + ,0 AS account_rate -- 销户率(片区) + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM + ( + SELECT + organ_code + ,organ_name + ,SUM(index_receivable) / SUM(index_receipts) AS index_receipts + FROM ods_caiwu_profit + -- where `year_month` = date_format(current_date,'%Y%m') + where `year_month` = '202408' + and comm_name not in('【喀什】融合国际新城','【贵阳】鹏淇·宏桥公园(撤场)') + GROUP BY + organ_code + ,organ_name + )T1 + LEFT JOIN + ( + select + organ_code + ,index_dj_target + from ods_finance_collection_target_area + WHERE ym = left(current_date,7) + )T2 + ON T1.organ_code = T2.organ_code + GROUP BY T1.organ_name +-- 收入完成率(片区) + UNION ALL + SELECT + organ_name AS organ_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,IFNULL(CASE WHEN SUM(CASE WHEN revenue_type = '创新' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) = 0 THEN 0 + ELSE SUM(CASE WHEN revenue_type = '创新' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) + / SUM(CASE WHEN revenue_type = '创新' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) + END,0) AS xing_revenue_rate -- 新零售收入完成率 + ,IFNULL(CASE WHEN SUM(CASE WHEN revenue_type = '附属' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) = 0 THEN 0 + ELSE SUM(CASE WHEN revenue_type = '附属' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) + / SUM(CASE WHEN revenue_type = '附属' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) + END,0) AS space_operate_rate -- 空间运营收入完成率 + ,IFNULL(CASE WHEN SUM(CASE WHEN revenue_type = '拎包' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) = 0 THEN 0 + ELSE SUM(CASE WHEN revenue_type = '拎包' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) + / SUM(CASE WHEN revenue_type = '拎包' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) + END,0) AS meiju_revenue_rate -- 美居收入完成率(片区) + ,IFNULL(CASE WHEN SUM(CASE WHEN revenue_type = '资产' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) = 0 THEN 0 + ELSE SUM(CASE WHEN revenue_type = '资产' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) + / SUM(CASE WHEN revenue_type = '资产' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) + END,0) AS rent_revenue_rate -- 资产租售收入完成率(片区) + ,IFNULL(CASE WHEN SUM(CASE WHEN business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) = 0 THEN 0 + ELSE SUM(CASE WHEN business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) + / SUM(CASE WHEN business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) + END,0) AS firth_revenue_rate -- 四大业务收入完成率(片区) + ,0 AS payment_rate -- 回款率(片区) + ,0 AS account_rate -- 销户率(片区) + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM dw.ods_innoveco_metrics_finish_d + WHERE business_type in('收入','目标') -- 业务类型 + AND YM = LEFT(current_date,7) + GROUP BY + organ_name + UNION ALL +-- 回款率/销户率 + SELECT + organ_name AS organ_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS xing_revenue_rate -- 新零售收入完成率 + ,0 AS space_operate_rate -- 空间运营收入完成率 + ,0 AS meiju_revenue_rate -- 美居收入完成率(片区) + ,0 AS rent_revenue_rate -- 资产租售收入完成率(片区) + ,0 AS firth_revenue_rate -- 四大业务收入完成率(片区) + ,SUM(IFNULL(payment_coll_amt,0)) / SUM(IFNULL(trans_amt,0)) AS payment_rate -- 回款率(片区) + ,SUM(IFNULL(payment_coll_num,0)) / SUM(IFNULL(trans_household_num,0)) AS account_rate -- 销户率(片区) + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM dws_law_tran_coll_d + WHERE ymd <= CURRENT_DATE() + GROUP BY + organ_name + UNION ALL +-- 设备空间巡查完成率 + SELECT + organ_name AS organ_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS xing_revenue_rate -- 新零售收入完成率 + ,0 AS space_operate_rate -- 空间运营收入完成率 + ,0 AS meiju_revenue_rate -- 美居收入完成率(片区) + ,0 AS rent_revenue_rate -- 资产租售收入完成率(片区) + ,0 AS firth_revenue_rate -- 四大业务收入完成率(片区) + ,0 AS payment_rate -- 回款率(片区) + ,0 AS account_rate -- 销户率(片区) + ,SUM(task_finish_num) / SUM(task_num) AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM dws_engine_equipment_inspect_task_m + where task_ym = date_format(current_date,'%Y%m') + GROUP BY + organ_name + UNION ALL +-- 水电费收缴率 + SELECT + organ_name AS organ_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS xing_revenue_rate -- 新零售收入完成率 + ,0 AS space_operate_rate -- 空间运营收入完成率 + ,0 AS meiju_revenue_rate -- 美居收入完成率(片区) + ,0 AS rent_revenue_rate -- 资产租售收入完成率(片区) + ,0 AS firth_revenue_rate -- 四大业务收入完成率(片区) + ,0 AS payment_rate -- 回款率(片区) + ,0 AS account_rate -- 销户率(片区) + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,sum((ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0))+(- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum((ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0))+(ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0))) AS water_electric_rate -- 水电费收缴率 + FROM dwd_finance_fees_serial_d + WHERE ParentCostCode = '0008' + AND MiddleCostCode in ('00080001','00080002','00080003','00080004','00080005','00080006','00080007','00080008','00080017','00080018','00080019','00080022','00080023','00080024','00080027','00080028','00080032','00080035') + AND ym = LEFT(current_date,7) + GROUP BY organ_name + )T +JOIN (SELECT organ_name FROM dim_organ_mapping GROUP BY organ_name)t1 ON T.organ_name = t1.organ_name +GROUP BY T.organ_name +; \ No newline at end of file diff --git a/finereport/预警/项目预警数据.sql b/finereport/预警/项目预警数据.sql new file mode 100644 index 0000000..5b35a54 --- /dev/null +++ b/finereport/预警/项目预警数据.sql @@ -0,0 +1,246 @@ +DROP TABLE dim_early_warning_comm_d; +-- 项目预警指标数据 +CREATE TABLE dim_early_warning_comm_d( + organ_code VARCHAR(50) COMMENT '片区id' + ,organ_name VARCHAR(50) COMMENT '片区名称' + ,comm_id VARCHAR(50) COMMENT '项目id' + ,comm_name VARCHAR(50) COMMENT '项目名称' + ,km_comple_rate DECIMAL(6,4) COMMENT '客满得分完成率' + ,ts_close_rate DECIMAL(6,4) COMMENT '投诉关闭率' + ,report_close_rate DECIMAL(6,4) COMMENT '报事关闭率' + ,cu_coll_comple_rate DECIMAL(6,4) COMMENT '当期收缴完成率' + ,pr_coll_comple_rate DECIMAL(6,4) COMMENT '往期收缴完成率' + ,total_coll_comple_rate DECIMAL(6,4) COMMENT '综合收缴完成率' + ,device_space_rate DECIMAL(6,4) COMMENT '设备空间巡查完成率' + ,water_electric_rate DECIMAL(6,4) COMMENT '水电费收缴率' +)COMMENT = '项目预警指标数据'; + +SELECT * FROM dim_early_warning_comm_d; +INSERT INTO dim_early_warning_comm_d +SELECT + T.organ_code AS organ_code + ,T.organ_name AS organ_name + ,T.comm_id AS comm_id + ,T.comm_name AS comm_name + ,SUM(km_comple_rate) AS km_comple_rate -- 客满得分完成率 + ,SUM(ts_close_rate) AS ts_close_rate -- 投诉关闭率 + ,SUM(report_close_rate) AS report_close_rate -- 报事关闭率 + ,SUM(cu_coll_comple_rate) AS cu_coll_comple_rate -- 当期收缴完成率 + ,SUM(pr_coll_comple_rate) AS pr_coll_comple_rate -- 往期收缴完成率 + ,sum(total_coll_comple_rate) AS total_coll_comple_rate + ,SUM(device_space_rate) AS device_space_rate -- 设备空间巡查完成率 + ,SUM(water_electric_rate) AS water_electric_rate -- 水电费收缴率 +FROM + ( + SELECT + T1.organ_code AS organ_code + ,T1.organ_name AS organ_name + ,T1.comm_id AS comm_id + ,T1.comm_name AS comm_name + ,IF(IFNULL(T1.comm_target,0)=0,0,(IFNULL(T2.index_dc_myddf,0) / IFNULL(T1.comm_target,0))) AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM + ( + SELECT + organ_code + ,organ_name -- 片区名称 + ,comm_id + ,comm_name -- 项目名称 + ,comm_target -- 项目目标得分 + FROM ods_wuye_satisfaction_target + WHERE yr = LEFT(CURRENT_DATE,4) + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + -- AND comm_type = '' + )T1 + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,index_dc_myddf + FROM ods_wuye_complaint + WHERE yr = LEFT(CURRENT_DATE,4) + AND jd = '二季度' + -- AND jd = CASE WHEN QUARTER(CURDATE()) = 1 THEN '一季度' + -- WHEN QUARTER(CURDATE()) = 2 THEN '二季度' + -- WHEN QUARTER(CURDATE()) = 3 THEN '三季度' + -- WHEN QUARTER(CURDATE()) = 4 THEN '四季度' EN + )T2 + ON T1.organ_code = T2.organ_code + AND T1.comm_id = T2.comm_id + UNION ALL +-- 投诉关闭率/报事关闭率 + SELECT + organ_code AS organ_code + ,organ_name AS organ_name + ,comm_id AS comm_id + ,comm_name AS comm_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,IF(IFNULL(sum(tousu_incident_num),0)=0,0,sum(tousu_close_incident_num) / sum(tousu_incident_num)) AS ts_close_rate -- 投诉关闭率 + ,IF(IFNULL(sum(incident_num),0)=0,0,sum(completed_incident_num - completed_not_close_incident_num) / sum(incident_num)) AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM dws_estate_incident_info_m + WHERE incident_ym = date_format(current_date,'%Y%m') + GROUP BY + organ_name,comm_name,comm_id,organ_code + UNION ALL +-- 收缴率 + SELECT + T1.organ_code AS organ_code + ,T1.organ_name AS organ_name + ,T1.commid AS comm_id + ,T1.comm_name AS comm_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,SUM(T1.cu_collection_rate) / SUM(T2.index_dq_target) AS cu_coll_comple_rate -- 当期收缴完成率 + ,SUM(T1.pr_collection_rate) / SUM(T2.index_wq_target) AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM + ( + SELECT + commid + ,comm_name + ,organ_code + ,organ_name + ,sum(ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0)) / sum(ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0)) cu_collection_rate + ,sum((- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum(ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0)) pr_collection_rate + from dwd_finance_fees_serial_d + where ParentCostCode = '0001' + and ym = left(current_date,7) + and organ_name not in ('东湖商管','领悦总部','演示机构') + and comm_name not like '%天富%' + and comm_name not in('【喀什】融合国际新城','【贵阳】鹏淇·宏桥公园(撤场)') + GROUP BY + organ_code + ,organ_name + ,commid + ,comm_name + )T1 + LEFT JOIN + ( + select + comm_id + ,comm_name + ,organ_code + ,organ_name + ,index_dq_target + ,index_wq_target + from ods_finance_collection_target_project + WHERE ym = left(current_date,7) + )T2 + ON T1.organ_code = T2.organ_code + AND T1.commid = T2.comm_id + GROUP BY + T1.organ_name,T1.comm_name,T1.commid,T1.organ_code + UNION ALL +-- 综合收缴率 + SELECT + T1.organ_code AS organ_code + ,T1.organ_name AS organ_name + ,T1.comm_id AS comm_id + ,T1.comm_name AS comm_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,SUM(T1.index_receipts) / SUM(T2.index_dj_target) AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,SUM(index_receivable) / SUM(index_receipts) AS index_receipts + FROM ods_caiwu_profit + -- where `year_month` = date_format(current_date,'%Y%m') + where `year_month` = '202408' + and comm_name not in('【喀什】融合国际新城','【贵阳】鹏淇·宏桥公园(撤场)') + GROUP BY + organ_code + ,organ_name + ,comm_id + ,comm_name + )T1 + LEFT JOIN + ( + select + organ_code + ,comm_id + ,index_dj_target + from ods_finance_collection_target_project + WHERE ym = left(current_date,7) + )T2 + ON T1.organ_code = T2.organ_code + AND T1.comm_id = T2.comm_id + GROUP BY + T1.organ_code,T1.organ_name,T1.comm_id ,T1.comm_name + UNION ALL +-- 设备空间巡查完成率 + SELECT + organ_code AS organ_code + ,organ_name AS organ_name + ,comm_id AS comm_id + ,comm_name AS comm_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,SUM(task_finish_num) / SUM(task_num) AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM dws_engine_equipment_inspect_task_m + where task_ym = date_format(current_date,'%Y%m') + GROUP BY + organ_name + ,organ_code + ,comm_id + ,comm_name + UNION ALL +-- 水电费收缴率 + SELECT + organ_code AS organ_code + ,organ_name AS organ_name + ,commid AS comm_id + ,comm_name AS comm_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,sum((ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0))+(- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum((ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0))+(ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0))) AS water_electric_rate -- 水电费收缴率 + FROM dwd_finance_fees_serial_d + WHERE ParentCostCode = '0008' + AND MiddleCostCode in ('00080001','00080002','00080003','00080004','00080005','00080006','00080007','00080008','00080017','00080018','00080019','00080022','00080023','00080024','00080027','00080028','00080032','00080035') + AND ym = LEFT(current_date,7) + GROUP BY organ_name,organ_code,commid,comm_name + )T JOIN (SELECT organ_code,comm_id FROM dim_organ_mapping GROUP BY organ_code,comm_id)t1 ON T.comm_id = t1.comm_id and T.organ_code = t1.organ_code + +GROUP BY T.organ_code + ,T.organ_name + ,T.comm_id + ,T.comm_name +; \ No newline at end of file diff --git a/finereport/预警/预警指标填报.sql b/finereport/预警/预警指标填报.sql new file mode 100644 index 0000000..1be00b8 --- /dev/null +++ b/finereport/预警/预警指标填报.sql @@ -0,0 +1,17 @@ +DROP TABLE ods_index_early_warning; +CREATE TABLE ods_index_early_warning( + index_name VARCHAR(50) COMMENT '指标名称' + ,comm_organ VARCHAR(50) COMMENT '项目/片区' + ,index_value DECIMAL(6,4) COMMENT '预警值' + ,mang_organ VARCHAR(100) COMMENT '角色' + ,update_by VARCHAR(50) COMMENT '更新人' + ,update_time TIMESTAMP COMMENT '更新时间' +)COMMENT = '指标预警值填报'; + + +SELECT + index_name -- 指标名称 + ,comm_organ -- 项目/片区 + ,index_value -- 预警值 + ,mang_organ -- 角色 +FROM ods_index_early_warning \ No newline at end of file From b248c37dcb4efbc08808348b6eed48872a85ecec Mon Sep 17 00:00:00 2001 From: yangkunan Date: Mon, 23 Sep 2024 14:56:35 +0800 Subject: [PATCH 31/89] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=94=B6=E8=B4=B9=E9=9D=A2=E7=A7=AF=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- finereport/xiazuan/2_operation/项目明细弹窗.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/finereport/xiazuan/2_operation/项目明细弹窗.sql b/finereport/xiazuan/2_operation/项目明细弹窗.sql index e781d8b..e7a7f4d 100644 --- a/finereport/xiazuan/2_operation/项目明细弹窗.sql +++ b/finereport/xiazuan/2_operation/项目明细弹窗.sql @@ -583,7 +583,7 @@ AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = ' SUM( CASE WHEN a.roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修已入住, -- SUM(b.CalcArea) AS 收费面积 -- 2024-09-20更新取数新逻辑:石老师确认 收费面积从房间表取 - SUM(a.CalcArea) AS 收费面积 + SUM(CASE WHEN a.roomstate IS NOT NULL AND a.roomstate <> '' THEN a.CalcArea ELSE 0 END) AS 收费面积 FROM ( SELECT From 8bc3e8c8a8801363fd282cb68527bb2befc494a2 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 24 Sep 2024 12:38:32 +0800 Subject: [PATCH 32/89] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 3 + .../dws_operation_subcompany_plan_level_d.sql | 7 +- .../xiazuan/2_operation/未完成计划明细.sql | 105 ++++++++++++++++++ .../xiazuan/2_operation/计划到期明细.sql | 61 +++++++--- finereport/xiazuan/权责亏损项目明细.sql | 32 ++++++ .../问题修复/计划到期明细组织架构为空.sql | 90 +++++++++++++++ 6 files changed, 278 insertions(+), 20 deletions(-) create mode 100644 finereport/xiazuan/2_operation/未完成计划明细.sql create mode 100644 finereport/xiazuan/权责亏损项目明细.sql create mode 100644 finereport/问题修复/计划到期明细组织架构为空.sql diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 53d4b7b..de6baaf 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -26,6 +26,7 @@ + @@ -38,6 +39,7 @@ + @@ -48,6 +50,7 @@ + diff --git a/dw/dws/dws_operation_subcompany_plan_level_d.sql b/dw/dws/dws_operation_subcompany_plan_level_d.sql index 5c9c04b..708aaaa 100644 --- a/dw/dws/dws_operation_subcompany_plan_level_d.sql +++ b/dw/dws/dws_operation_subcompany_plan_level_d.sql @@ -1,5 +1,5 @@ select - left(a.start_date,7) ym + left(a.end_date,7) ym , b.subcompanyid1 subcompanyid , c.subcompanyname , c.supsubcomid @@ -7,7 +7,7 @@ select , count(*) plan_num , count(plan_name) plan_adjust_num , sum(case when plan_status = 2 then 1 else 0 end) plan_cancel_num - , sum(case when plan_status = 6 then 1 else 0 end) plan_exempt_assess_num + , sum(case when plan_status = 7 then 1 else 0 end) plan_exempt_assess_num , sum(case when plan_status = 4 then 1 else 0 end) plan_incomplete_num , sum(case when left(start_date,7) = left(input_date,7) then 1 else 0 end) plan_thism_num , sum(case when plan_status = 0 then 1 else 0 end) plan_in_progress_num @@ -33,8 +33,9 @@ from ( on b.subcompanyid1 = c.id left join (select distinct plan_name from dwd_operations_plan_adjust_info_d) d on a.id = d.plan_name +WHERE left(a.end_date,7) = '2024-09' group by - left(a.start_date,7) + left(a.end_date,7) , b.subcompanyid1 , c.subcompanyname , c.supsubcomid diff --git a/finereport/xiazuan/2_operation/未完成计划明细.sql b/finereport/xiazuan/2_operation/未完成计划明细.sql new file mode 100644 index 0000000..4de0e7a --- /dev/null +++ b/finereport/xiazuan/2_operation/未完成计划明细.sql @@ -0,0 +1,105 @@ +-- ***************************** +-- 创建人员: 杨坤安 +-- 创建时间: +-- 功能描述: 未完成计划明细 +-- ***************************** + +with one_to_many AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) + WHERE a.username = '${fine_username}' +) +select + ${if(len(p_area) == 0,"c.organ_name","c.comm_name")} as p_area + ,c.oa_comm_id as oa_comm_id -- oa项目id + ,c.oa_comm_name as oa_comm_name -- oa项目名称 + ,c.oa_organ_code as oa_organ_code -- oa片区id + ,c.oa_organ_name as oa_organ_name -- oa片区名称 + ,c.organ_code as organ_code -- erp片区编码 + ,c.organ_name as organ_name -- erp片区名称 + ,c.comm_id as comm_id -- erp项目id + ,c.comm_name as comm_name -- erp项目名称 + ,b.subcompanyid1 as subcompanyid1 -- 公司id + ,a.plan_name as plan_name -- 计划名称 + ,a.eval_criteria as plan_desc -- 计划内容 + ,a.plan_level as plan_level -- 计划等级 + ,left(a.start_date,7) as ym -- 计划开始年月 + ,a.start_dt as start_dt -- 计划开始时 + ,a.end_date as end_date -- 计划结束时间 + ,a.finish_date as finish_date -- 计划完成时间 + ,a.input_date as input_date -- 计划录入时间 + ,a.day_diff as day_diff -- 距离计划结束天数 + ,a.responsible_person1 as responsible_person1 -- 责任人编码 + ,b.lastname as executor_name -- 责任人名称 + ,d.lastname AS lastname -- 执行人 + ,left(a.end_ym,7) as end_ym -- 计划结束年月 +from + ( + SELECT + concat(left(trim(start_date),5),lpad(substring_index(substring_index(trim(start_date),'-',2),'-',-1),2,0),right(trim(start_date),3)) as start_date + ,a.start_date as start_dt -- 计划开始时间 + ,a.plan_level -- 计划等级 + ,jt.responsible_person1 -- 责任人 + ,a.plan_status -- 计划状态 + ,a.input_date -- 录入时间 + ,a.end_date -- 计划结束时间 + ,a.plan_name -- 计划名称 + ,concat(left(trim(end_date),5),lpad(substring_index(substring_index(trim(end_date),'-',2),'-',-1),2,0),right(trim(end_date),3)) as end_ym + ,a.finish_date -- 完成时间 + ,TO_DAYS(a.end_date) - TO_DAYS(curdate()) AS day_diff + ,a.eval_criteria -- 评价标准 + ,a.executor -- 执行人 + FROM dw.dwd_operations_plan_info_d a, + JSON_TABLE ( + cast( CONCAT( '["', REPLACE ( responsible_person1, ',', '","' ), '"]' ) AS json ), + "$[*]" COLUMNS ( responsible_person1 INT PATH "$" ) + ) AS jt + WHERE a.plan_status = '4' + )a + left join + ( + select + id + ,subcompanyid1 -- 公司id + ,lastname -- 执行人 + from dw.ods_oa_hrmresource_d + + )b + on a.responsible_person1 = b.id + left join + ( + select + distinct + organ_code -- erp片区id + ,organ_name -- erp片区名称 + ,comm_id -- erp项目id + ,comm_name -- erp项目名称 + ,oa_organ_code -- oa片区id + ,oa_organ_name -- oa片区名称 + ,oa_comm_id -- oa项目id + ,oa_comm_name -- oa项目名称 + from dim_organ_mapping -- 组织结构映射维度表 + -- where comm_id is not null + )c + on b.subcompanyid1 = c.oa_comm_id + left join + ( + select + id + ,subcompanyid1 -- 公司id + ,lastname -- 执行人 + from dw.ods_oa_hrmresource_d + + )d + on a.executor = d.id +where 1 = 1 + ${if(len(p_startdate) == 0,"","and left(a.end_ym,7) = '" + p_startdate + "'")} + ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} +-- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END diff --git a/finereport/xiazuan/2_operation/计划到期明细.sql b/finereport/xiazuan/2_operation/计划到期明细.sql index 1ed0e56..1e9c3fa 100644 --- a/finereport/xiazuan/2_operation/计划到期明细.sql +++ b/finereport/xiazuan/2_operation/计划到期明细.sql @@ -5,7 +5,18 @@ -- 目 录: xianzuan>2_运营>计划到期明细.fvs -- **************************************** + + -- 【数据集: report_计划到期】 +with one_to_many AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) + WHERE a.username = '${fine_username}' +) select ${if(len(p_area) == 0,"c.organ_name","c.comm_name")} as p_area ,c.oa_comm_id as oa_comm_id -- oa项目id @@ -28,6 +39,7 @@ select ,a.day_diff as day_diff -- 距离计划结束天数 ,a.responsible_person1 as responsible_person1 -- 责任人编码 ,b.lastname as executor_name -- 责任人名称 + ,d.lastname AS lastname -- 执行人 ,left(a.end_ym,7) as end_ym -- 计划结束年月 from ( @@ -44,15 +56,16 @@ from ,a.finish_date -- 完成时间 ,TO_DAYS(a.end_date) - TO_DAYS(curdate()) AS day_diff ,a.eval_criteria -- 评价标准 + ,a.executor -- 执行人 FROM dw.dwd_operations_plan_info_d a, JSON_TABLE ( cast( CONCAT( '["', REPLACE ( responsible_person1, ',', '","' ), '"]' ) AS json ), "$[*]" COLUMNS ( responsible_person1 INT PATH "$" ) ) AS jt - -- WHERE TO_DAYS(a.end_date) - TO_DAYS(curdate()) <= 3 + -- WHERE TO_DAYS(a.end_date) - TO_DAYS(curdate()) <= 3 -- AND TO_DAYS(a.end_date) - TO_DAYS(curdate()) >= 1 where a.end_date > date_format(CURDATE() - INTERVAL 3 day,'%Y-%m-%d') - and a.end_date <= date_format(CURDATE(),'%Y-%m-%d') + and a.end_date <= date_format(CURDATE(),'%Y-%m-%d') )a left join ( @@ -64,25 +77,39 @@ from )b on a.responsible_person1 = b.id + left join + ( + select + distinct + organ_code -- erp片区id + ,organ_name -- erp片区名称 + ,comm_id -- erp项目id + ,comm_name -- erp项目名称 + ,oa_organ_code -- oa片区id + ,oa_organ_name -- oa片区名称 + ,oa_comm_id -- oa项目id + ,oa_comm_name -- oa项目名称 + from dim_organ_mapping -- 组织结构映射维度表 + -- where comm_id is not null + )c + on b.subcompanyid1 = c.oa_comm_id left join ( select - distinct - organ_code -- erp片区id - ,organ_name -- erp片区名称 - ,comm_id -- erp项目id - ,comm_name -- erp项目名称 - ,oa_organ_code -- oa片区id - ,oa_organ_name -- oa片区名称 - ,oa_comm_id -- oa项目id - ,oa_comm_name -- oa项目名称 - from dim_organ_mapping -- 组织结构映射维度表 - where comm_id is not null - )c - on b.subcompanyid1 = c.oa_comm_id - where 1 = 1 + id + ,subcompanyid1 -- 公司id + ,lastname -- 执行人 + from dw.ods_oa_hrmresource_d + + )d + on a.executor = d.id +where 1 = 1 ${if(len(p_startdate) == 0,"","and left(a.end_ym,7) = '" + p_startdate + "'")} - ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} + ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} +-- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END diff --git a/finereport/xiazuan/权责亏损项目明细.sql b/finereport/xiazuan/权责亏损项目明细.sql new file mode 100644 index 0000000..51b5063 --- /dev/null +++ b/finereport/xiazuan/权责亏损项目明细.sql @@ -0,0 +1,32 @@ +with one_to_many AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) + WHERE a.username = '${fine_username}' +) +SELECT + organ_code -- erp片区code + ,organ_name -- erp片区名称 + ,comm_id -- 项目id + ,comm_name -- 项目名称 + ,index_income_target -- 收入目标 + ,index_income_fact -- 收入完成 + ,income_completion_rate -- 完成率 + ,index_cost_target -- 成本目标 + ,index_cost_fact -- 成本完成 + ,cost_completion_rate -- 完成率 + ,index_profit_target -- 利润目标 + ,index_profit_fact -- 利润完成 + ,profit_completion_rate -- 完成率 + ,index_market_target -- 市扩目标 + ,index_market_fact -- 市扩完成 + ,market_completion_rate -- 完成率 +from ods_caiwu_feecollection +where category = '物业' +and index_profit_fact < 0 +${IF(LEN(p_startdate)>0," AND yr_month ='" + p_startdate + "'","and yr_month = '2024-06' ")} +${if(len(p_area) == 0,"","and organ_code in ('" + p_area + "')")} +${IF(LEN(p_shop)!=0," and comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} \ No newline at end of file diff --git a/finereport/问题修复/计划到期明细组织架构为空.sql b/finereport/问题修复/计划到期明细组织架构为空.sql new file mode 100644 index 0000000..c066bda --- /dev/null +++ b/finereport/问题修复/计划到期明细组织架构为空.sql @@ -0,0 +1,90 @@ + + + +SELECT + c.organ_name + ,c.comm_name + ,c.oa_comm_id as oa_comm_id -- oa项目id + ,c.oa_comm_name as oa_comm_name -- oa项目名称 + ,c.oa_organ_code as oa_organ_code -- oa片区id + ,c.oa_organ_name as oa_organ_name -- oa片区名称 + ,c.organ_code as organ_code -- erp片区编码 + ,c.organ_name as organ_name -- erp片区名称 + ,c.comm_id as comm_id -- erp项目id + ,c.comm_name as comm_name -- erp项目名称 + ,b.subcompanyid1 as subcompanyid1 -- 公司id + ,a.plan_name as plan_name -- 计划名称 + ,a.eval_criteria as plan_desc -- 计划内容 + ,a.plan_level as plan_level -- 计划等级 + ,left(a.start_date,7) as ym -- 计划开始年月 + ,a.start_dt as start_dt -- 计划开始时 + ,a.end_date as end_date -- 计划结束时间 + ,a.finish_date as finish_date -- 计划完成时间 + ,a.input_date as input_date -- 计划录入时间 + ,a.day_diff as day_diff -- 距离计划结束天数 + ,a.responsible_person1 as responsible_person1 -- 责任人编码 + ,b.lastname as executor_name -- 责任人名称 + ,left(a.end_ym,7) as end_ym -- 计划结束年月 +from + ( + SELECT + concat(left(trim(start_date),5),lpad(substring_index(substring_index(trim(start_date),'-',2),'-',-1),2,0),right(trim(start_date),3)) as start_date + ,a.start_date as start_dt -- 计划开始时间 + ,a.plan_level -- 计划等级 + ,jt.responsible_person1 -- 责任人 + ,a.plan_status -- 计划状态 + ,a.input_date -- 录入时间 + ,a.end_date -- 计划结束时间 + ,a.plan_name -- 计划名称 + ,concat(left(trim(end_date),5),lpad(substring_index(substring_index(trim(end_date),'-',2),'-',-1),2,0),right(trim(end_date),3)) as end_ym + ,a.finish_date -- 完成时间 + ,TO_DAYS(a.end_date) - TO_DAYS(curdate()) AS day_diff + ,a.eval_criteria -- 评价标准 + FROM dw.dwd_operations_plan_info_d a, + JSON_TABLE ( + cast( CONCAT( '["', REPLACE ( responsible_person1, ',', '","' ), '"]' ) AS json ), + "$[*]" COLUMNS ( responsible_person1 INT PATH "$" ) + ) AS jt + -- WHERE TO_DAYS(a.end_date) - TO_DAYS(curdate()) <= 3 + -- AND TO_DAYS(a.end_date) - TO_DAYS(curdate()) >= 1 + where a.end_date > date_format(CURDATE() - INTERVAL 3 day,'%Y-%m-%d') + and a.end_date <= date_format(CURDATE(),'%Y-%m-%d') + )a + left join + ( + select + id + ,subcompanyid1 -- 公司id + ,lastname -- 执行人 + from dw.ods_oa_hrmresource_d + + )b + on a.responsible_person1 = b.id + left join + ( + select + distinct + organ_code -- erp片区id + ,organ_name -- erp片区名称 + ,comm_id -- erp项目id + ,comm_name -- erp项目名称 + ,oa_organ_code -- oa片区id + ,oa_organ_name -- oa片区名称 + ,oa_comm_id -- oa项目id + ,oa_comm_name -- oa项目名称 + from dim_organ_mapping -- 组织结构映射维度表 + -- WHERE oa_comm_id = '610' + WHERE oa_organ_code = '610' + -- where comm_id is not null + )c + on b.subcompanyid1 = c.oa_comm_id +; + + + +select + id + ,subcompanyid1 -- 公司id + ,lastname -- 执行人 +from dw.ods_oa_hrmresource_d +WHERE ods_oa_hrmresource_d.subcompanyid1 = '610'; \ No newline at end of file From 531b49f393ff01ec578aa751127ca675f9c5f531 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 24 Sep 2024 13:59:03 +0800 Subject: [PATCH 33/89] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 1 + finereport/xiazuan/权责亏损项目明细.sql | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index de6baaf..1c139a9 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -50,6 +50,7 @@ + diff --git a/finereport/xiazuan/权责亏损项目明细.sql b/finereport/xiazuan/权责亏损项目明细.sql index 51b5063..b2b7e70 100644 --- a/finereport/xiazuan/权责亏损项目明细.sql +++ b/finereport/xiazuan/权责亏损项目明细.sql @@ -3,7 +3,7 @@ with one_to_many AS( a.username AS username -- 用户名 ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 FROM ods_one_to_many_perm a - JOIN mysql.help_topic b + JOIN mysql.help_topic b on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) WHERE a.username = '${fine_username}' ) From 94894d2673b2273755a16fe11fa0705c79fa444c Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 24 Sep 2024 18:01:11 +0800 Subject: [PATCH 34/89] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E4=B8=9A=E6=80=81?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8F=96=E5=80=BC=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dw/dim/dim_project_base_info_d.sql | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/dw/dim/dim_project_base_info_d.sql b/dw/dim/dim_project_base_info_d.sql index 8bfb4a2..1395e99 100644 --- a/dw/dim/dim_project_base_info_d.sql +++ b/dw/dim/dim_project_base_info_d.sql @@ -2,6 +2,8 @@ -- 修改人: 杨坤安 -- 修改日期: 2024-09-06 -- 修改内容: 一个项目接管面积会有多个,先累加再关联 +-- 修改日期: 2024-09-24 +-- 修改内容: 项目对应业态取值规则变更 -- ***************************** select b.CommId @@ -57,6 +59,7 @@ select , a.CityLevel , a.CommitteeTermStartDate , a.CommitteeTermEndDate + , b.DictionaryName AS StateNameNew from ( select c.CommId @@ -117,5 +120,26 @@ from ( on a.ParentId = c.id group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33 ) a - right join (select * from ods_erp_tb_hspr_community_d where IsDelete = 0) b - on a.CommId = b.CommId \ No newline at end of file + right join + ( + SELECT + b1.* + ,b2.DictionaryName + FROM + ( + select + * + from ods_erp_tb_hspr_community_d + where IsDelete = 0 + )b1 + LEFT JOIN + (-- add 2024-09-24 项目业态新规则取数 + select + DictionaryCode -- 项目业态编码 + ,DictionaryName -- 项目业态名称 + from ods_erp_tb_dictionary_projectformat_d + )b2 + ON B1.CommKind = b2.DictionaryCode + + ) b + on a.CommId = b.CommId \ No newline at end of file From b0a2b6b3eca007cf257cd186536507f4d74e6f5b Mon Sep 17 00:00:00 2001 From: yangkunan Date: Wed, 9 Oct 2024 16:59:33 +0800 Subject: [PATCH 35/89] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=90=88=E5=90=8C?= =?UTF-8?q?=E7=BB=93=E6=9D=9F=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xiazuan/2_operation/项目明细弹窗.sql | 71 ++++++++++--------- 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/finereport/xiazuan/2_operation/项目明细弹窗.sql b/finereport/xiazuan/2_operation/项目明细弹窗.sql index e7a7f4d..e5de853 100644 --- a/finereport/xiazuan/2_operation/项目明细弹窗.sql +++ b/finereport/xiazuan/2_operation/项目明细弹窗.sql @@ -485,7 +485,7 @@ SELECT A.ContractArea,-- 合同面积 【建筑面积】 A.TakeOverArea,-- 接管面积 【合约面积】 A.ManageContractArea ManageContractArea,-- 管理口径合同面积 【在管面积】 - A.StateName AS StateName,-- 业态 【项目业态】 + A.StateNameNew AS StateName,-- 业态 【项目业态】 A.ContractName,-- 合同类型 A.GetMethod,-- 项目获取渠道 A.ContractPartyName,-- 合同对方名称 @@ -494,7 +494,9 @@ SELECT END AS 是否成立委员会,-- 是否已成立业主委员会 A.CommitteeTime,-- 业委会成立时间 A.ChargeMode, - CONCAT(DATE_FORMAT(A.CommitteeTermStartDate, '%Y-%m-%d' ) , ' 至 ',DATE_FORMAT(A.CommitteeTermEndDate, '%Y-%m-%d' )) AS 任职天数,-- 任职时间 + CASE WHEN A.IsSetCommittee = '1' THEN CONCAT(DATE_FORMAT(A.CommitteeTermStartDate, '%Y-%m-%d' ) , ' 至 ',DATE_FORMAT(A.CommitteeTermEndDate, '%Y-%m-%d' )) + ELSE NULL END + AS 任职天数,-- 任职时间 C.room_num AS room_num,-- 总户数 B.organ_name AS organ_name,-- erp片区名称 B.comm_name AS comm_name,-- erp项目名称 @@ -524,7 +526,8 @@ SELECT G.厂区物业服务费, G.酒店物业服务费, G.车位管理物业服务费, - G.车位月租费用 + G.车位月租费用, + A.ContractEndTime FROM ( SELECT @@ -570,9 +573,9 @@ AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = ' LEFT JOIN ( - SELECT + SELECT a.CommID - ,SUM(CASE WHEN a.roomstate <> 0 THEN 1 ELSE 0 END) AS room_num, -- 项目对应房间数量 + ,SUM(CASE WHEN a.roomstate <> 0 THEN 1 ELSE 0 END) AS room_num, -- 项目对应房间数量 SUM( CASE WHEN a.roomstate IN ( '1', '4', '9', '10', '5', '6' ) THEN a.buildarea ELSE 0 END ) AS 已售面积, SUM( CASE WHEN a.roomstate = '2' THEN a.buildarea ELSE 0 END ) AS 未售面积, SUM( CASE WHEN a.roomstate NOT IN('0','2') THEN 1 ELSE 0 END ) AS 已交付户数, @@ -581,35 +584,34 @@ AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = ' SUM( CASE WHEN a.roomstate IN ( '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修户数, SUM( CASE WHEN a.roomstate = '5' THEN 1 ELSE 0 END ) AS 已完成装修未入住, SUM( CASE WHEN a.roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修已入住, - -- SUM(b.CalcArea) AS 收费面积 - -- 2024-09-20更新取数新逻辑:石老师确认 收费面积从房间表取 + -- SUM(b.CalcArea) AS 收费面积 SUM(CASE WHEN a.roomstate IS NOT NULL AND a.roomstate <> '' THEN a.CalcArea ELSE 0 END) AS 收费面积 FROM - ( - SELECT - * - FROM dw.dim_room_d - )a - LEFT JOIN - ( - SELECT - b1.CommId AS CommId - ,b1.RoomID AS RoomID - ,SUM(CalcArea) AS CalcArea - FROM - ( - SELECT - CommId - , CalcArea - , RoomID - FROM ods_erp_tb_hspr_coststansetting_d - WHERE RoomID <> '0' - GROUP BY CommId, CalcArea, RoomID - )b1 - GROUP BY b1.CommId,b1.RoomID - )b - ON a.CommID = b.CommId - AND a.RoomID = b.RoomID + ( + SELECT + * + FROM dw.dim_room_d + )a + LEFT JOIN + ( + SELECT + b1.CommId AS CommId + ,b1.RoomID AS RoomID + ,SUM(CalcArea) AS CalcArea + FROM + ( + SELECT + CommId + , CalcArea + , RoomID + FROM ods_erp_tb_hspr_coststansetting_d + WHERE RoomID <> '0' + GROUP BY CommId, CalcArea, RoomID + )b1 + GROUP BY b1.CommId,b1.RoomID + )b + ON a.CommID = b.CommId + AND a.RoomID = b.RoomID GROUP BY CommID )C ON A.CommId = C.CommID @@ -625,7 +627,7 @@ AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = ' CommID )D ON A.COMMID = D.COMMID - LEFT JOIN + LEFT JOIN ( SELECT A.CommId @@ -707,5 +709,4 @@ AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = ' GROUP BY A.CommId )G - ON A.COMMID = G.COMMID -; \ No newline at end of file + ON A.COMMID = G.COMMID \ No newline at end of file From da78536473a4608be03180a94800a3ddcb90cd8a Mon Sep 17 00:00:00 2001 From: yangkunan Date: Thu, 17 Oct 2024 11:19:07 +0800 Subject: [PATCH 36/89] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 2 + dw/dim/dim_project_base_info_d.sql | 88 +++--- dw/dwd/dwd_cost_detail_data_d.sql | 2 +- .../dws_operation_subcompany_plan_level_d.sql | 45 +-- finereport/kanban/mobile/工程_mobile.sql | 31 +- .../xiazuan/2_operation/计划到期明细.sql | 25 +- .../xiazuan/4_engine/2_水电能耗明细.sql | 264 +++++++++++++----- finereport/预警/片区预警数据.sql | 1 + 8 files changed, 315 insertions(+), 143 deletions(-) diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 1c139a9..98b3673 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -10,6 +10,7 @@ + @@ -29,6 +30,7 @@ + diff --git a/dw/dim/dim_project_base_info_d.sql b/dw/dim/dim_project_base_info_d.sql index 1395e99..0163dc5 100644 --- a/dw/dim/dim_project_base_info_d.sql +++ b/dw/dim/dim_project_base_info_d.sql @@ -4,6 +4,8 @@ -- 修改内容: 一个项目接管面积会有多个,先累加再关联 -- 修改日期: 2024-09-24 -- 修改内容: 项目对应业态取值规则变更 +-- 修改日期: 2024-10-09 +-- 修改内容: 新增合同到期时间 -- ***************************** select b.CommId @@ -60,6 +62,7 @@ select , a.CommitteeTermStartDate , a.CommitteeTermEndDate , b.DictionaryName AS StateNameNew + , a.ContractEndTime AS ContractEndTime from ( select c.CommId @@ -95,51 +98,52 @@ from ( , c.CityLevel , c.CommitteeTermStartDate , c.CommitteeTermEndDate + , a.ContractEndTime -- 合同结束时间 , sum(TakeOverArea) TakeOverArea , sum(ContractArea) ContractArea , sum(ManageContractArea) ManageContractArea from - ( - select - * - from ods_erp_tb_hspr_projecttakeoverinformation_d - where IsDelete = 0 - ) a - left join - ( - select - ParentId - ,SUM(TakeOverArea) AS TakeOverArea - from ods_erp_tb_hspr_projecttakeoverdetail_d - WHERE IsDelete = 0 - group by - ParentId - ) b - on a.id = b.ParentId - right join (select * from ods_erp_tb_hspr_projectbasicinfomation_d where IsDelete = 0) c - on a.ParentId = c.id - group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33 + ( + select + * + from ods_erp_tb_hspr_projecttakeoverinformation_d + where IsDelete = 0 + ) a + left join + ( + select + ParentId + ,SUM(TakeOverArea) AS TakeOverArea + from ods_erp_tb_hspr_projecttakeoverdetail_d + WHERE IsDelete = 0 + group by + ParentId + ) b + on a.id = b.ParentId + right join (select * from ods_erp_tb_hspr_projectbasicinfomation_d where IsDelete = 0) c + on a.ParentId = c.id + group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34 ) a - right join - ( - SELECT - b1.* - ,b2.DictionaryName - FROM - ( - select - * - from ods_erp_tb_hspr_community_d - where IsDelete = 0 - )b1 - LEFT JOIN - (-- add 2024-09-24 项目业态新规则取数 - select - DictionaryCode -- 项目业态编码 - ,DictionaryName -- 项目业态名称 - from ods_erp_tb_dictionary_projectformat_d - )b2 - ON B1.CommKind = b2.DictionaryCode + right join + ( + SELECT + b1.* + ,b2.DictionaryName + FROM + ( + select + * + from ods_erp_tb_hspr_community_d + where IsDelete = 0 + )b1 + LEFT JOIN + (-- add 2024-09-24 项目业态新规则取数 + select + DictionaryCode -- 项目业态编码 + ,DictionaryName -- 项目业态名称 + from ods_erp_tb_dictionary_projectformat_d + )b2 + ON B1.CommKind = b2.DictionaryCode - ) b - on a.CommId = b.CommId \ No newline at end of file + ) b + on a.CommId = b.CommId \ No newline at end of file diff --git a/dw/dwd/dwd_cost_detail_data_d.sql b/dw/dwd/dwd_cost_detail_data_d.sql index 069bd28..bd2c7cc 100644 --- a/dw/dwd/dwd_cost_detail_data_d.sql +++ b/dw/dwd/dwd_cost_detail_data_d.sql @@ -47,7 +47,7 @@ CREATE TABLE IF NOT EXISTS dw.dwd_cost_detail_data_d ( -- ---------------------------------------------------------------------------------------------- - +SELECT * FROM dw.dwd_cost_detail_data_d; truncate dw.dwd_cost_detail_data_d; INSERT into dw.dwd_cost_detail_data_d SELECT diff --git a/dw/dws/dws_operation_subcompany_plan_level_d.sql b/dw/dws/dws_operation_subcompany_plan_level_d.sql index 708aaaa..467de22 100644 --- a/dw/dws/dws_operation_subcompany_plan_level_d.sql +++ b/dw/dws/dws_operation_subcompany_plan_level_d.sql @@ -4,18 +4,23 @@ select , c.subcompanyname , c.supsubcomid , a.plan_level - , count(*) plan_num - , count(plan_name) plan_adjust_num - , sum(case when plan_status = 2 then 1 else 0 end) plan_cancel_num - , sum(case when plan_status = 7 then 1 else 0 end) plan_exempt_assess_num - , sum(case when plan_status = 4 then 1 else 0 end) plan_incomplete_num - , sum(case when left(start_date,7) = left(input_date,7) then 1 else 0 end) plan_thism_num - , sum(case when plan_status = 0 then 1 else 0 end) plan_in_progress_num - , sum(case when plan_status = 1 then 1 else 0 end) plan_complete_num + ,a.plan_name +,a.id +,a.responsible_person1 +,organ_code, organ_name, comm_id, comm_name + , oa_organ_code, oa_organ_name, oa_comm_id, oa_comm_name + -- , count(*) plan_num + -- , count(plan_name) plan_adjust_num + -- , sum(case when plan_status = 2 then 1 else 0 end) plan_cancel_num + -- , sum(case when plan_status = 7 then 1 else 0 end) plan_exempt_assess_num + -- , sum(case when plan_status = 4 then 1 else 0 end) plan_incomplete_num + -- , sum(case when left(start_date,7) = left(input_date,7) then 1 else 0 end) plan_thism_num + -- , sum(case when plan_status = 0 then 1 else 0 end) plan_in_progress_num + -- , sum(case when plan_status = 1 then 1 else 0 end) plan_complete_num from ( SELECT concat(left(trim(start_date),5),lpad(substring_index(substring_index(trim(start_date),'-',2),'-',-1),2,0),right(trim(start_date),3)) start_date, - a.plan_level, + a.plan_level,plan_name, jt.responsible_person1 , a.id, a.plan_status, @@ -26,6 +31,8 @@ from ( cast( CONCAT( '["', REPLACE ( responsible_person1, ',', '","' ), '"]' ) AS json ), "$[*]" COLUMNS ( responsible_person1 INT PATH "$" ) ) AS jt + where a.id in ('17015','17016','17024','17056','17075','17084','29372','29373','29374','29375','29376','29377','29433','29434','29435','29436','29437','29438','29439','29440','29503','29504','29505','29506','29507','29508','29509','29510','29561','29562','29564','29565','29566','29567','29568','29569','29591','29629','29630','40703','42177','42180','42767','42779','42837') + ) a left join ods_oa_hrmresource_d b on a.responsible_person1 = b.id @@ -33,10 +40,16 @@ from ( on b.subcompanyid1 = c.id left join (select distinct plan_name from dwd_operations_plan_adjust_info_d) d on a.id = d.plan_name -WHERE left(a.end_date,7) = '2024-09' -group by - left(a.end_date,7) - , b.subcompanyid1 - , c.subcompanyname - , c.supsubcomid - , a.plan_level \ No newline at end of file + left join (select distinct organ_code, organ_name, comm_id, comm_name + , oa_organ_code, oa_organ_name, oa_comm_id, oa_comm_name from dim_organ_mapping where comm_id is not null) b1 + on b.subcompanyid1 = b1.oa_comm_id + +WHERE left(a.end_date,7) = '2024-10' + +-- AND b.subcompanyid1 in(select distinct oa_comm_id from dim_organ_mapping where comm_id is not null and organ_code = '0108') +-- group by +-- left(a.end_date,7) +-- , b.subcompanyid1 +-- , c.subcompanyname +-- , c.supsubcomid +-- , a.plan_level \ No newline at end of file diff --git a/finereport/kanban/mobile/工程_mobile.sql b/finereport/kanban/mobile/工程_mobile.sql index 32c706f..646a484 100644 --- a/finereport/kanban/mobile/工程_mobile.sql +++ b/finereport/kanban/mobile/工程_mobile.sql @@ -1,5 +1,3 @@ --- 【单位面积能耗同环比】 - select A.organ_code AS organ_code , A.organ_name AS organ_name @@ -9,7 +7,12 @@ select , 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 + , B.StateNameNew AS StateNameNew + ,CASE WHEN StateNameNew = '写字楼' AND MeterType = '水表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS XZL_SHUI + ,CASE WHEN StateNameNew = '写字楼' AND MeterType = '电表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS XZL_DIAN + ,CASE WHEN StateNameNew = '商住' AND MeterType = '水表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS SZ_SHUI + ,CASE WHEN StateNameNew = '商住' AND MeterType = '电表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS SZ_DIAN + ,IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) AS DOSAGE_PER_SQUARE_METER from ( SELECT @@ -22,23 +25,26 @@ from , Dosage , Amount FROM dws_engine_meter_dosage_m - ${IF(p_type = "环比","/*","")} + ${IF(p_type = "环比","/*","")} 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(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + -- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + ${IF(LEN(p_shop)!=0," and comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} ${IF(LEN(p_ym)>0," AND right(list_ym,2) ='" +right(p_ym,2) + "'","")} and MeterType in ('水表','电表') order by list_ym asc ${IF(p_type = "环比","*/","")} - ${IF(p_type = "环比","","/*")} + ${IF(p_type = "环比","","/*")} 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,"','")+"')", "")} - ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + -- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + + ${IF(LEN(p_shop)!=0," and comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} ORDER BY list_ym ASC ${IF(p_type = "环比","","*/")} )A @@ -46,11 +52,16 @@ from ( select CommId -- 项目id + ,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew + ELSE '商住' + END AS StateNameNew + ,SUM(FloorArea + UndergroundArea) as totalarea ,SUM(ContractArea) AS ContractArea-- 合同面积(建筑面积) from dim_project_base_info_d GROUP BY - CommId + CommId,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew + ELSE '商住' + END )B ON A.comm_id = B.CommId -ORDER BY A.list_ym,A.MeterType -; \ No newline at end of file +ORDER BY A.list_ym,A.MeterType \ No newline at end of file diff --git a/finereport/xiazuan/2_operation/计划到期明细.sql b/finereport/xiazuan/2_operation/计划到期明细.sql index 1e9c3fa..1619f33 100644 --- a/finereport/xiazuan/2_operation/计划到期明细.sql +++ b/finereport/xiazuan/2_operation/计划到期明细.sql @@ -18,7 +18,8 @@ with one_to_many AS( WHERE a.username = '${fine_username}' ) select - ${if(len(p_area) == 0,"c.organ_name","c.comm_name")} as p_area + -- ${if(len(p_area) == 0,"c.organ_name","c.comm_name")} as p_area + ${if(len(p_area) == 0,"COALESCE(c.oa_organ_name,e.subcompanyname)","COALESCE(c.oa_comm_name,e.subcompanyname)")} as p_area ,c.oa_comm_id as oa_comm_id -- oa项目id ,c.oa_comm_name as oa_comm_name -- oa项目名称 ,c.oa_organ_code as oa_organ_code -- oa片区id @@ -31,6 +32,7 @@ select ,a.plan_name as plan_name -- 计划名称 ,a.eval_criteria as plan_desc -- 计划内容 ,a.plan_level as plan_level -- 计划等级 + ,a.plan_level_name as plan_level_name -- 计划等级名称 ,left(a.start_date,7) as ym -- 计划开始年月 ,a.start_dt as start_dt -- 计划开始时 ,a.end_date as end_date -- 计划结束时间 @@ -57,12 +59,13 @@ from ,TO_DAYS(a.end_date) - TO_DAYS(curdate()) AS day_diff ,a.eval_criteria -- 评价标准 ,a.executor -- 执行人 + ,case when a.plan_level = 4 then '控股集团级计划' when a.plan_level = 0 then '一级计划' when a.plan_level = 1 then '二级计划' when a.plan_level = 3 then '三级计划' end plan_level_name FROM dw.dwd_operations_plan_info_d a, JSON_TABLE ( cast( CONCAT( '["', REPLACE ( responsible_person1, ',', '","' ), '"]' ) AS json ), "$[*]" COLUMNS ( responsible_person1 INT PATH "$" ) ) AS jt - -- WHERE TO_DAYS(a.end_date) - TO_DAYS(curdate()) <= 3 + -- WHERE TO_DAYS(a.end_date) - TO_DAYS(curdate()) <= 3 -- AND TO_DAYS(a.end_date) - TO_DAYS(curdate()) >= 1 where a.end_date > date_format(CURDATE() - INTERVAL 3 day,'%Y-%m-%d') and a.end_date <= date_format(CURDATE(),'%Y-%m-%d') @@ -93,7 +96,7 @@ from -- where comm_id is not null )c on b.subcompanyid1 = c.oa_comm_id - left join + left join ( select id @@ -103,15 +106,21 @@ from )d on a.executor = d.id + LEFT JOIN + ( + SELECT + * + FROM dw.ods_oa_hrmsubcompany_d -- 分部信息表 + -- WHERE id = '288' + )e + ON b.subcompanyid1 = e.id where 1 = 1 ${if(len(p_startdate) == 0,"","and left(a.end_ym,7) = '" + p_startdate + "'")} - ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} + ${IF(LEN(p_area)!=0," and coalesce(c.oa_organ_code,e.id) IN ('"+p_area+"')","")} -- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL - THEN comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') - ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END - - + THEN COALESCE(c.oa_organ_name,e.subcompanyname) IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","COALESCE(c.oa_organ_name,e.subcompanyname) = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END -- 【筛选框数据集: dic_oa片区】 diff --git a/finereport/xiazuan/4_engine/2_水电能耗明细.sql b/finereport/xiazuan/4_engine/2_水电能耗明细.sql index 2cd34d4..d90e46a 100644 --- a/finereport/xiazuan/4_engine/2_水电能耗明细.sql +++ b/finereport/xiazuan/4_engine/2_水电能耗明细.sql @@ -1,82 +1,214 @@ - +-- 【dic_erp片区】 +with one_to_many_organ AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_organ, ',',b.help_topic_id + 1),',',-1) AS mang_organ -- 管理片区 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_organ) - length(replace(a.mang_organ,',','')) + 1) + WHERE a.username = '${fine_username}' +) 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)+"'")} +-- ${if(GETUSERDEPARTMENTS(2)="领悦集团总部","","and organ_name = '"+GETUSERDEPARTMENTS(2)+"'")} + AND CASE WHEN (SELECT mang_organ FROM ods_one_to_many_perm WHERE username = '${fine_username}') IS NOT NULL + THEN organ_name IN (SELECT mang_organ FROM one_to_many_organ WHERE username = '${fine_username}') + ELSE ${if(GETUSERDEPARTMENTS(2)!="领悦集团总部","organ_name = '"+GETUSERDEPARTMENTS(2)+"'","1=1")} END - - --- 【能耗环比】 - --- 折线图 -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 - --- 明细表 - - - - - - --- 【能耗同比】 +-- 【单位面积能耗_环比】 + with one_to_many AS( 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 +a.username AS username -- 用户名 +,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 +FROM ods_one_to_many_perm a +JOIN mysql.help_topic b +on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) +WHERE a.username = '${fine_username}' +) +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 + , B.StateNameNew AS StateNameNew + ,CASE WHEN StateNameNew = '写字楼' AND MeterType = '水表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS XZL_SHUI + ,CASE WHEN StateNameNew = '写字楼' AND MeterType = '电表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS XZL_DIAN + ,CASE WHEN StateNameNew = '商住' AND MeterType = '水表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS SZ_SHUI + ,CASE WHEN StateNameNew = '商住' AND MeterType = '电表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS SZ_DIAN + ,IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) 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)+"'","")} + AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END + )A + LEFT JOIN + ( + select + CommId -- 项目id + ,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew + ELSE '商住' + END AS StateNameNew + ,SUM(FloorArea + UndergroundArea) as totalarea + ,SUM(ContractArea) AS ContractArea-- 合同面积(建筑面积) + from dim_project_base_info_d + GROUP BY + CommId,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew + ELSE '商住' + END + )B + ON A.comm_id = B.CommId +ORDER BY A.list_ym,A.MeterType + +-- 【单位面积能耗_同比】 + + with one_to_many AS( +SELECT +a.username AS username -- 用户名 +,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 +FROM ods_one_to_many_perm a +JOIN mysql.help_topic b +on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) +WHERE a.username = '${fine_username}' +) +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 + , B.StateNameNew AS StateNameNew + ,CASE WHEN StateNameNew = '写字楼' AND MeterType = '水表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS XZL_SHUI + ,CASE WHEN StateNameNew = '写字楼' AND MeterType = '电表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS XZL_DIAN + ,CASE WHEN StateNameNew = '商住' AND MeterType = '水表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS SZ_SHUI + ,CASE WHEN StateNameNew = '商住' AND MeterType = '电表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS SZ_DIAN + ,IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea))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 CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END + + and MeterType in ('水表','电表') + + )A + LEFT JOIN + ( + select + CommId -- 项目id + ,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew + ELSE '商住' + END AS StateNameNew + ,SUM(FloorArea + UndergroundArea) as totalarea + ,SUM(ContractArea) AS ContractArea-- 合同面积(建筑面积) + from dim_project_base_info_d + GROUP BY + CommId,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew + ELSE '商住' + END + )B + ON A.comm_id = B.CommId +order by A.list_ym,A.MeterType asc -- 【明细】 + with one_to_many AS( +SELECT +a.username AS username -- 用户名 +,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 +FROM ods_one_to_many_perm a +JOIN mysql.help_topic b +on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) +WHERE a.username = '${fine_username}' +) 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,"','")+"')", "")} + + ${if(len(p_area) == 0,"A.organ_name","A.comm_name")} as p_area -- 片区/项目 + , A.MeterType AS MeterType + , SUM(A.Dosage) AS Dosage -- 能耗 + , sum(A.Amount) AS Amount -- 金额 + -- , B.StateNameNew AS StateNameNew -- 业态 + ,IF(sum(B.ContractArea) = 0,0,(sum(A.Dosage) / sum(B.totalarea)))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 = ${replace(p_ym,'-','')} + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(P_MeterType)>0," AND MeterType IN ('"+JOINARRAY(P_MeterType,"','")+"')", "")} + )A + LEFT JOIN + ( + select + CommId -- 项目id + ,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew + ELSE '商住' + END AS StateNameNew + ,SUM(FloorArea + UndergroundArea) as totalarea + ,SUM(ContractArea) AS ContractArea-- 合同面积(建筑面积) + from dim_project_base_info_d + GROUP BY + CommId,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew + ELSE '商住' + END + )B + ON A.comm_id = B.CommId GROUP BY -${if(len(p_area) == 0,"organ_name","comm_name")} - , MeterType - - +${if(len(p_area) == 0,"A.organ_name","A.comm_name")} +, A.MeterType \ No newline at end of file diff --git a/finereport/预警/片区预警数据.sql b/finereport/预警/片区预警数据.sql index 1bd2ad6..81078fc 100644 --- a/finereport/预警/片区预警数据.sql +++ b/finereport/预警/片区预警数据.sql @@ -132,6 +132,7 @@ FROM ,organ_name ,sum(ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0)) / sum(ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0)) cu_collection_rate ,sum((- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum(ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0)) pr_collection_rate + ,sum(ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0)- ifnull(cu_offset_pr_amt,0) - ifnull(cu_paid_pr_amt,0)) / sum(ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0) + ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0)) total_collection_rate from dwd_finance_fees_serial_d where ParentCostCode = '0001' and ym = left(current_date,7) From 1d02adcc5462ecb53b6f22021405f1faa02c555c Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 23 Jul 2024 09:07:40 +0800 Subject: [PATCH 37/89] =?UTF-8?q?ods=E8=84=9A=E6=9C=AC=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dw/ods/ods_erp_divmanage_pointstatisticsreport_d.sql | 1 - dw/ods/ods_erp_tb_cp_dictionary_d.sql | 1 - dw/ods/ods_erp_tb_cp_flow_task_ambient_d.sql | 1 - dw/ods/ods_erp_tb_cp_flow_task_d.sql | 1 - dw/ods/ods_erp_tb_cp_flow_task_patrol_d.sql | 1 - dw/ods/ods_erp_tb_cp_flow_task_safe_d.sql | 1 - dw/ods/ods_erp_tb_cp_point_d.sql | 1 - dw/ods/ods_erp_tb_cp_syspoint_d.sql | 1 - dw/ods/ods_erp_tb_cp_tasklevel_d.sql | 1 - dw/ods/ods_erp_tb_divfmanage_category_d.sql | 1 - dw/ods/ods_erp_tb_divfmanage_contract_d.sql | 1 - dw/ods/ods_erp_tb_divfmanage_contractpoint_d.sql | 1 - dw/ods/ods_erp_tb_divfmanage_dictionary_d.sql | 1 - dw/ods/ods_erp_tb_divfmanage_point_d.sql | 1 - dw/ods/ods_erp_tb_divfmanage_region_d.sql | 1 - dw/ods/ods_erp_tb_eq_equipment_d.sql | 1 - dw/ods/ods_erp_tb_eq_equipmentstatus_d.sql | 1 - dw/ods/ods_erp_tb_eq_flow_task_inspection_d.sql | 1 - dw/ods/ods_erp_tb_eq_flow_task_maintenance_d.sql | 1 - dw/ods/ods_erp_tb_eq_rank_d.sql | 1 - dw/ods/ods_erp_tb_eq_space_d.sql | 1 - dw/ods/ods_erp_tb_hr_archives_d.sql | 1 - dw/ods/ods_erp_tb_hspr_building_d.sql | 1 - dw/ods/ods_erp_tb_hspr_carpark_d.sql | 1 - dw/ods/ods_erp_tb_hspr_community_d.sql | 1 - dw/ods/ods_erp_tb_hspr_corpcostitem_d.sql | 1 - dw/ods/ods_erp_tb_hspr_corpincidenttype_d.sql | 1 - dw/ods/ods_erp_tb_hspr_costitem_d.sql | 1 - dw/ods/ods_erp_tb_hspr_customermeter_d.sql | 1 - dw/ods/ods_erp_tb_hspr_customermeterresulthis_d.sql | 1 - dw/ods/ods_erp_tb_hspr_parking_d.sql | 1 - dw/ods/ods_erp_tb_hspr_projectbasicinfomation_d.sql | 1 - dw/ods/ods_erp_tb_hspr_projecttakeoverdetail_d.sql | 1 - dw/ods/ods_erp_tb_hspr_projecttakeoverinformation_d.sql | 1 - dw/ods/ods_erp_tb_hspr_room_d.sql | 1 - dw/ods/ods_erp_tb_hspr_roomstate_d.sql | 1 - dw/ods/ods_erp_tb_sys_department_d.sql | 1 - dw/ods/ods_erp_tb_sys_organ_d.sql | 1 - dw/ods/ods_erp_tb_sys_role_d.sql | 1 - dw/ods/ods_erp_tb_sys_roledata_d.sql | 1 - dw/ods/ods_erp_tb_sys_user_d.sql | 1 - dw/ods/ods_erp_tb_sys_userrole_d.sql | 1 - dw/ods/ods_erp_view_hspr_incidentnewjh_search_filter_d.sql | 1 - dw/ods/ods_oa_hrmdepartment_d.sql | 1 - dw/ods/ods_oa_hrmresource_d.sql | 1 - dw/ods/ods_oa_hrmsubcompany_d.sql | 1 - dw/ods/ods_oa_uf_hfwy_jhtzbd_d.sql | 1 - dw/ods/ods_oa_uf_hfwyjhbzb_d.sql | 1 - dw/ods/ods_oa_uf_jhzpjl_d.sql | 1 - dw/ods/ods_oa_uf_wy_aj_d.sql | 1 - dw/ods/ods_oa_uf_wy_hk_d.sql | 1 - dw/ods/ods_oa_uf_wy_jhmkh_d.sql | 1 - dw/ods/ods_oa_uf_wy_lsxx_d.sql | 1 - dw/ods/ods_oa_uf_wy_pq_d.sql | 1 - dw/ods/ods_oa_uf_wy_qf_d.sql | 1 - dw/ods/ods_oa_uf_wy_xm_d.sql | 1 - dw/ods/ods_oa_uf_wy_yj_d.sql | 1 - 57 files changed, 57 deletions(-) diff --git a/dw/ods/ods_erp_divmanage_pointstatisticsreport_d.sql b/dw/ods/ods_erp_divmanage_pointstatisticsreport_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_divmanage_pointstatisticsreport_d.sql +++ b/dw/ods/ods_erp_divmanage_pointstatisticsreport_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_cp_dictionary_d.sql b/dw/ods/ods_erp_tb_cp_dictionary_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_cp_dictionary_d.sql +++ b/dw/ods/ods_erp_tb_cp_dictionary_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_cp_flow_task_ambient_d.sql b/dw/ods/ods_erp_tb_cp_flow_task_ambient_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_cp_flow_task_ambient_d.sql +++ b/dw/ods/ods_erp_tb_cp_flow_task_ambient_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_cp_flow_task_d.sql b/dw/ods/ods_erp_tb_cp_flow_task_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_cp_flow_task_d.sql +++ b/dw/ods/ods_erp_tb_cp_flow_task_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_cp_flow_task_patrol_d.sql b/dw/ods/ods_erp_tb_cp_flow_task_patrol_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_cp_flow_task_patrol_d.sql +++ b/dw/ods/ods_erp_tb_cp_flow_task_patrol_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_cp_flow_task_safe_d.sql b/dw/ods/ods_erp_tb_cp_flow_task_safe_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_cp_flow_task_safe_d.sql +++ b/dw/ods/ods_erp_tb_cp_flow_task_safe_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_cp_point_d.sql b/dw/ods/ods_erp_tb_cp_point_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_cp_point_d.sql +++ b/dw/ods/ods_erp_tb_cp_point_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_cp_syspoint_d.sql b/dw/ods/ods_erp_tb_cp_syspoint_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_cp_syspoint_d.sql +++ b/dw/ods/ods_erp_tb_cp_syspoint_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_cp_tasklevel_d.sql b/dw/ods/ods_erp_tb_cp_tasklevel_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_cp_tasklevel_d.sql +++ b/dw/ods/ods_erp_tb_cp_tasklevel_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_divfmanage_category_d.sql b/dw/ods/ods_erp_tb_divfmanage_category_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_divfmanage_category_d.sql +++ b/dw/ods/ods_erp_tb_divfmanage_category_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_divfmanage_contract_d.sql b/dw/ods/ods_erp_tb_divfmanage_contract_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_divfmanage_contract_d.sql +++ b/dw/ods/ods_erp_tb_divfmanage_contract_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_divfmanage_contractpoint_d.sql b/dw/ods/ods_erp_tb_divfmanage_contractpoint_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_divfmanage_contractpoint_d.sql +++ b/dw/ods/ods_erp_tb_divfmanage_contractpoint_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_divfmanage_dictionary_d.sql b/dw/ods/ods_erp_tb_divfmanage_dictionary_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_divfmanage_dictionary_d.sql +++ b/dw/ods/ods_erp_tb_divfmanage_dictionary_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_divfmanage_point_d.sql b/dw/ods/ods_erp_tb_divfmanage_point_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_divfmanage_point_d.sql +++ b/dw/ods/ods_erp_tb_divfmanage_point_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_divfmanage_region_d.sql b/dw/ods/ods_erp_tb_divfmanage_region_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_divfmanage_region_d.sql +++ b/dw/ods/ods_erp_tb_divfmanage_region_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_eq_equipment_d.sql b/dw/ods/ods_erp_tb_eq_equipment_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_eq_equipment_d.sql +++ b/dw/ods/ods_erp_tb_eq_equipment_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_eq_equipmentstatus_d.sql b/dw/ods/ods_erp_tb_eq_equipmentstatus_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_eq_equipmentstatus_d.sql +++ b/dw/ods/ods_erp_tb_eq_equipmentstatus_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_eq_flow_task_inspection_d.sql b/dw/ods/ods_erp_tb_eq_flow_task_inspection_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_eq_flow_task_inspection_d.sql +++ b/dw/ods/ods_erp_tb_eq_flow_task_inspection_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_eq_flow_task_maintenance_d.sql b/dw/ods/ods_erp_tb_eq_flow_task_maintenance_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_eq_flow_task_maintenance_d.sql +++ b/dw/ods/ods_erp_tb_eq_flow_task_maintenance_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_eq_rank_d.sql b/dw/ods/ods_erp_tb_eq_rank_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_eq_rank_d.sql +++ b/dw/ods/ods_erp_tb_eq_rank_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_eq_space_d.sql b/dw/ods/ods_erp_tb_eq_space_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_eq_space_d.sql +++ b/dw/ods/ods_erp_tb_eq_space_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hr_archives_d.sql b/dw/ods/ods_erp_tb_hr_archives_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hr_archives_d.sql +++ b/dw/ods/ods_erp_tb_hr_archives_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_building_d.sql b/dw/ods/ods_erp_tb_hspr_building_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_building_d.sql +++ b/dw/ods/ods_erp_tb_hspr_building_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_carpark_d.sql b/dw/ods/ods_erp_tb_hspr_carpark_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_carpark_d.sql +++ b/dw/ods/ods_erp_tb_hspr_carpark_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_community_d.sql b/dw/ods/ods_erp_tb_hspr_community_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_community_d.sql +++ b/dw/ods/ods_erp_tb_hspr_community_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_corpcostitem_d.sql b/dw/ods/ods_erp_tb_hspr_corpcostitem_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_corpcostitem_d.sql +++ b/dw/ods/ods_erp_tb_hspr_corpcostitem_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_corpincidenttype_d.sql b/dw/ods/ods_erp_tb_hspr_corpincidenttype_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_corpincidenttype_d.sql +++ b/dw/ods/ods_erp_tb_hspr_corpincidenttype_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_costitem_d.sql b/dw/ods/ods_erp_tb_hspr_costitem_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_costitem_d.sql +++ b/dw/ods/ods_erp_tb_hspr_costitem_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_customermeter_d.sql b/dw/ods/ods_erp_tb_hspr_customermeter_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_customermeter_d.sql +++ b/dw/ods/ods_erp_tb_hspr_customermeter_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_customermeterresulthis_d.sql b/dw/ods/ods_erp_tb_hspr_customermeterresulthis_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_customermeterresulthis_d.sql +++ b/dw/ods/ods_erp_tb_hspr_customermeterresulthis_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_parking_d.sql b/dw/ods/ods_erp_tb_hspr_parking_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_parking_d.sql +++ b/dw/ods/ods_erp_tb_hspr_parking_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_projectbasicinfomation_d.sql b/dw/ods/ods_erp_tb_hspr_projectbasicinfomation_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_projectbasicinfomation_d.sql +++ b/dw/ods/ods_erp_tb_hspr_projectbasicinfomation_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_projecttakeoverdetail_d.sql b/dw/ods/ods_erp_tb_hspr_projecttakeoverdetail_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_projecttakeoverdetail_d.sql +++ b/dw/ods/ods_erp_tb_hspr_projecttakeoverdetail_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_projecttakeoverinformation_d.sql b/dw/ods/ods_erp_tb_hspr_projecttakeoverinformation_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_projecttakeoverinformation_d.sql +++ b/dw/ods/ods_erp_tb_hspr_projecttakeoverinformation_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_room_d.sql b/dw/ods/ods_erp_tb_hspr_room_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_room_d.sql +++ b/dw/ods/ods_erp_tb_hspr_room_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_hspr_roomstate_d.sql b/dw/ods/ods_erp_tb_hspr_roomstate_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_hspr_roomstate_d.sql +++ b/dw/ods/ods_erp_tb_hspr_roomstate_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_sys_department_d.sql b/dw/ods/ods_erp_tb_sys_department_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_sys_department_d.sql +++ b/dw/ods/ods_erp_tb_sys_department_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_sys_organ_d.sql b/dw/ods/ods_erp_tb_sys_organ_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_sys_organ_d.sql +++ b/dw/ods/ods_erp_tb_sys_organ_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_sys_role_d.sql b/dw/ods/ods_erp_tb_sys_role_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_sys_role_d.sql +++ b/dw/ods/ods_erp_tb_sys_role_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_sys_roledata_d.sql b/dw/ods/ods_erp_tb_sys_roledata_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_sys_roledata_d.sql +++ b/dw/ods/ods_erp_tb_sys_roledata_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_sys_user_d.sql b/dw/ods/ods_erp_tb_sys_user_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_sys_user_d.sql +++ b/dw/ods/ods_erp_tb_sys_user_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_tb_sys_userrole_d.sql b/dw/ods/ods_erp_tb_sys_userrole_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_tb_sys_userrole_d.sql +++ b/dw/ods/ods_erp_tb_sys_userrole_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_erp_view_hspr_incidentnewjh_search_filter_d.sql b/dw/ods/ods_erp_view_hspr_incidentnewjh_search_filter_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_erp_view_hspr_incidentnewjh_search_filter_d.sql +++ b/dw/ods/ods_erp_view_hspr_incidentnewjh_search_filter_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_hrmdepartment_d.sql b/dw/ods/ods_oa_hrmdepartment_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_hrmdepartment_d.sql +++ b/dw/ods/ods_oa_hrmdepartment_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_hrmresource_d.sql b/dw/ods/ods_oa_hrmresource_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_hrmresource_d.sql +++ b/dw/ods/ods_oa_hrmresource_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_hrmsubcompany_d.sql b/dw/ods/ods_oa_hrmsubcompany_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_hrmsubcompany_d.sql +++ b/dw/ods/ods_oa_hrmsubcompany_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_uf_hfwy_jhtzbd_d.sql b/dw/ods/ods_oa_uf_hfwy_jhtzbd_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_uf_hfwy_jhtzbd_d.sql +++ b/dw/ods/ods_oa_uf_hfwy_jhtzbd_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_uf_hfwyjhbzb_d.sql b/dw/ods/ods_oa_uf_hfwyjhbzb_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_uf_hfwyjhbzb_d.sql +++ b/dw/ods/ods_oa_uf_hfwyjhbzb_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_uf_jhzpjl_d.sql b/dw/ods/ods_oa_uf_jhzpjl_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_uf_jhzpjl_d.sql +++ b/dw/ods/ods_oa_uf_jhzpjl_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_uf_wy_aj_d.sql b/dw/ods/ods_oa_uf_wy_aj_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_uf_wy_aj_d.sql +++ b/dw/ods/ods_oa_uf_wy_aj_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_uf_wy_hk_d.sql b/dw/ods/ods_oa_uf_wy_hk_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_uf_wy_hk_d.sql +++ b/dw/ods/ods_oa_uf_wy_hk_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_uf_wy_jhmkh_d.sql b/dw/ods/ods_oa_uf_wy_jhmkh_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_uf_wy_jhmkh_d.sql +++ b/dw/ods/ods_oa_uf_wy_jhmkh_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_uf_wy_lsxx_d.sql b/dw/ods/ods_oa_uf_wy_lsxx_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_uf_wy_lsxx_d.sql +++ b/dw/ods/ods_oa_uf_wy_lsxx_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_uf_wy_pq_d.sql b/dw/ods/ods_oa_uf_wy_pq_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_uf_wy_pq_d.sql +++ b/dw/ods/ods_oa_uf_wy_pq_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_uf_wy_qf_d.sql b/dw/ods/ods_oa_uf_wy_qf_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_uf_wy_qf_d.sql +++ b/dw/ods/ods_oa_uf_wy_qf_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_uf_wy_xm_d.sql b/dw/ods/ods_oa_uf_wy_xm_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_uf_wy_xm_d.sql +++ b/dw/ods/ods_oa_uf_wy_xm_d.sql @@ -1 +0,0 @@ -ECHO is off. diff --git a/dw/ods/ods_oa_uf_wy_yj_d.sql b/dw/ods/ods_oa_uf_wy_yj_d.sql index f6b3f5f..e69de29 100644 --- a/dw/ods/ods_oa_uf_wy_yj_d.sql +++ b/dw/ods/ods_oa_uf_wy_yj_d.sql @@ -1 +0,0 @@ -ECHO is off. From 3ec7aa29bec49ae8c76e5fe8dbcebc78e842b931 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 23 Jul 2024 12:00:17 +0800 Subject: [PATCH 38/89] =?UTF-8?q?=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84?= =?UTF-8?q?=E4=BC=98=E5=8C=96+=E9=83=A8=E5=88=86=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E8=A1=A8=E4=BF=AE=E6=94=B9=E4=B8=BA=E5=A4=9A=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 5 +- dw/dwd/dwd_cost_detail_data_d.sql | 2 - dwd_cost_detail_data_d.sql | 194 ------------------ .../2_operation}/住服比异常项目.sql | 12 +- .../2_operation}/计划到期明细.sql | 77 +++---- .../2_operation}/车位空置率明细.sql | 0 .../2_operation}/项目明细弹窗.sql | 49 ++--- 7 files changed, 77 insertions(+), 262 deletions(-) delete mode 100644 dwd_cost_detail_data_d.sql rename finereport/{detail => xiazuan/2_operation}/住服比异常项目.sql (76%) rename finereport/{detail => xiazuan/2_operation}/计划到期明细.sql (61%) rename finereport/{detail => xiazuan/2_operation}/车位空置率明细.sql (100%) rename finereport/{detail => xiazuan/2_operation}/项目明细弹窗.sql (63%) diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 297a7b5..8b050c8 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -6,8 +6,9 @@ - - + + + \ No newline at end of file diff --git a/dw/dwd/dwd_cost_detail_data_d.sql b/dw/dwd/dwd_cost_detail_data_d.sql index bf0e83e..069bd28 100644 --- a/dw/dwd/dwd_cost_detail_data_d.sql +++ b/dw/dwd/dwd_cost_detail_data_d.sql @@ -1,4 +1,3 @@ - -- ----------------------------------- -- 费控明细表建表 -- ----------------------------------- @@ -27,7 +26,6 @@ CREATE TABLE IF NOT EXISTS dw.dwd_cost_detail_data_d ( ,implementation_rate VARCHAR(50) COMMENT '执行率' )COMMENT = '费控明细表'; - -- **************************************** -- 创建人员: 杨坤安 -- 创建日期: 2024-07-19 diff --git a/dwd_cost_detail_data_d.sql b/dwd_cost_detail_data_d.sql deleted file mode 100644 index 0fd163e..0000000 --- a/dwd_cost_detail_data_d.sql +++ /dev/null @@ -1,194 +0,0 @@ - -------------------------------------- --- 费控明细表建表 -------------------------------------- -DROP TABLE IF EXISTS dw.dwd_cost_detail_data_d; -CREATE TABLE IF NOT EXISTS dw.dwd_cost_detail_data_d ( - yearname VARCHAR(50) COMMENT '年' -,monthname VARCHAR(50) COMMENT '月' -,organ_code VARCHAR(255) COMMENT '片区ID' -,organ_name VARCHAR(255) COMMENT '片区名称' -,cost_code VARCHAR(50) COMMENT '成本类型编码: LC:行政成本 AC:人力成本' -,cost_name VARCHAR(50) COMMENT '成本类型名称' -,dimsubjectcode VARCHAR(255) COMMENT '组织机构编码' -,dimsubjectname VARCHAR(255) COMMENT '组织机构名称' -,totalcode VARCHAR(255) COMMENT '组织机构层级编码' -,dimaccountcode VARCHAR(255) COMMENT '预算科目编码' -,dimaccountname VARCHAR(255) COMMENT '预算科目名称' -,buget VARCHAR(255) COMMENT '预算金额' -,occ VARCHAR(255) COMMENT '已占用金额' -,realfee VARCHAR(255) COMMENT '已使用金额' -,available VARCHAR(255) COMMENT '剩余可用金额' -,budgetfee_rate VARCHAR(50) COMMENT '预算执行率' -,originalcurrency VARCHAR(255) COMMENT '调整金额' -,target_fee VARCHAR(255) COMMENT '目标值' -,actual_fee VARCHAR(255) COMMENT '实际值' -,diff_amount VARCHAR(255) COMMENT '差额' -,implementation_rate VARCHAR(50) COMMENT '执行率' -)COMMENT = '费控明细表' - - ------------------------------------------------------------------------------------------------- --- 【指标计算】 - --- 预算金额 - 调整金额 = 预算初期金额 - --- 查询预算sql的预算金额(年月需要和调整金额sql中的年月一致)-调整金额sql的调整金额=预算初期金额 - --- 目标值 = 预算金额 - 调整金额 --- 实际值 = 已使用金额 --- 差额 = 目标值 - 实际值 --- 执行率 = 实际值 / 目标值 - ------------------------------------------------------------------------------------------------- - - -truncate dw.dwd_cost_detail_data_d; -INSERT into dw.dwd_cost_detail_data_d -SELECT - T1.yearname AS yearname -- 年 - ,T1.monthname AS monthname -- 月 - ,T2.organ_code AS organ_code -- 片区ID - ,T2.organ_name AS organ_name -- 片区名称 - ,T1.cost_code AS cost_code -- 成本类型编码: LC:行政成本 AC:人力成本 - ,T1.cost_name AS cost_name -- 成本类型名称 - ,T1.dimsubjectcode AS dimsubjectcode -- 组织机构编码 - ,T1.dimsubjectname AS dimsubjectname -- 组织机构名称 - ,T1.totalcode AS totalcode -- 组织机构层级编码 - ,T1.dimaccountcode AS dimaccountcode -- 预算科目编码 - ,T1.dimaccountname AS dimaccountname -- 预算科目名称 - ,T1.buget AS buget -- 预算金额 - ,T1.occ AS occ -- 已占用金额 - ,T1.realfee AS realfee -- 已使用金额 - ,T1.available AS available -- 剩余可用金额 - ,T1.budgetfee_rate AS budgetfee_rate -- 预算执行率 - ,T1.originalcurrency AS originalcurrency -- 调整金额 - ,T1.target_fee AS target_fee -- 目标值 - ,T1.actual_fee AS actual_fee -- 实际值 - ,ROUND((T1.target_fee - T1.actual_fee),2) AS diff_amount -- 差额 - ,case when T1.target_fee = 0 then '0%' else concat(ROUND((T1.actual_fee / T1.target_fee)*100,2),'%') end AS implementation_rate -- 执行率 -FROM -( - SELECT - A.yearname AS yearname -- 年 - ,A.monthname AS monthname -- 月 - ,'LC' AS cost_code -- 成本类型编码: LC:行政成本 AC:人力成本 - ,'行政成本' AS cost_name -- 成本类型名称 - ,A.dimsubjectcode AS dimsubjectcode -- 组织机构编码 - ,A.dimsubjectname AS dimsubjectname -- 组织机构名称 - ,A.totalcode AS totalcode -- 组织机构层级编码 - ,A.dimaccountcode AS dimaccountcode -- 预算科目编码 - ,A.dimaccountname AS dimaccountname -- 预算科目名称 - ,A.buget AS buget -- 预算金额 - ,A.occ AS occ -- 已占用金额 - ,A.realfee AS realfee -- 已使用金额 - ,A.available AS available -- 剩余可用金额 - ,A.budgetfee_rate AS budgetfee_rate -- 预算执行率 - ,COALESCE(B.originalcurrency,0) AS originalcurrency -- 调整金额 - ,ROUND((A.buget - COALESCE(B.originalcurrency,0)),2) AS target_fee -- 目标值 - ,A.realfee AS actual_fee -- 实际值 - -- ,'' AS diff_amount -- 差额 - -- ,'' AS implementation_rate -- 执行率 - FROM - ( - SELECT - dimaccountcode -- 预算科目编码 - ,dimaccountname -- 预算科目名称 - ,dimsubjectcode -- 组织机构编码 - ,dimsubjectname -- 组织机构名称 - ,yearname -- 年 - ,totalcode -- 组织机构层级编码 - ,monthname -- 月 - ,buget -- 预算金额 - ,occ -- 已占用金额 - ,realfee -- 已使用金额 - ,available -- 剩余可用金额 - ,budgetfee_rate -- 预算执行率 - FROM dw.dwd_cost_budget_data_d -- 预算金额明细表 - WHERE dimaccountcode IN('WY0402','WY040201','WY040202','WY040203','WY040204','WY040205','WY040206','WY040207','WY040208','WY040209','WY040210','WY040211','WY040212','WY040213','WY040214','WY040215','WY040216') - )A - LEFT JOIN - ( - SELECT - year -- 年 - ,month -- 月 - ,dimsubjectcode -- 调整组织机构编码 - ,dimaccountcode -- 调整预算科目编码 - ,originalcurrency -- 调整金额 - FROM dw.dwd_cost_adjust_data_d -- 调整金额明细表 - WHERE dimaccountcode IN('WY0402','WY040201','WY040202','WY040203','WY040204','WY040205','WY040206','WY040207','WY040208','WY040209','WY040210','WY040211','WY040212','WY040213','WY040214','WY040215','WY040216') - )B - ON A.dimaccountcode = B.dimaccountcode - AND A.dimsubjectcode = B.dimsubjectcode - AND A.yearname = B.year - AND A.monthname = B.month - UNION ALL - SELECT - A.yearname AS yearname -- 年 - ,A.monthname AS monthname -- 月 - ,'AC' AS cost_code -- 成本类型编码: LC:行政成本 AC:人力成本 - ,'人力成本' AS cost_name -- 成本类型名称 - ,A.dimsubjectcode AS dimsubjectcode -- 组织机构编码 - ,A.dimsubjectname AS dimsubjectname -- 组织机构名称 - ,A.totalcode AS totalcode -- 组织机构层级编码 - ,A.dimaccountcode AS dimaccountcode -- 预算科目编码 - ,A.dimaccountname AS dimaccountname -- 预算科目名称 - ,A.buget AS buget -- 预算金额 - ,A.occ AS occ -- 已占用金额 - ,A.realfee AS realfee -- 已使用金额 - ,A.available AS available -- 剩余可用金额 - ,A.budgetfee_rate AS budgetfee_rate -- 预算执行率 - ,COALESCE(B.originalcurrency,0) AS originalcurrency -- 调整金额 - ,ROUND((A.buget - COALESCE(B.originalcurrency,0)),2) AS target_fee -- 目标值 - ,A.realfee AS actual_fee -- 实际值 - -- ,'' AS diff_amount -- 差额 - -- ,'' AS implementation_rate -- 执行率 - FROM - ( - SELECT - dimaccountcode -- 预算科目编码 - ,dimaccountname -- 预算科目名称 - ,dimsubjectcode -- 组织机构编码 - ,dimsubjectname -- 组织机构名称 - ,yearname -- 年 - ,totalcode -- 组织机构层级编码 - ,monthname -- 月 - ,buget -- 预算金额 - ,occ -- 已占用金额 - ,realfee -- 已使用金额 - ,available -- 剩余可用金额 - ,budgetfee_rate -- 预算执行率 - FROM dw.dwd_cost_budget_data_d -- 预算金额明细表 - WHERE dimaccountcode IN('WY0401','WY040101','WY040102','WY040103','WY040104','WY040105','WY040106','WY040107','WY040108','WY040109','WY040110','WY040111','WY040112','WY040113','WY040114') - )A - LEFT JOIN - ( - SELECT - year -- 年 - ,month -- 月 - ,dimsubjectcode -- 调整组织机构编码 - ,dimaccountcode -- 调整预算科目编码 - ,originalcurrency -- 调整金额 - FROM dw.dwd_cost_adjust_data_d -- 调整金额明细表 - WHERE dimaccountcode IN('WY0401','WY040101','WY040102','WY040103','WY040104','WY040105','WY040106','WY040107','WY040108','WY040109','WY040110','WY040111','WY040112','WY040113','WY040114') - )B - ON A.dimaccountcode = B.dimaccountcode - AND A.dimsubjectcode = B.dimsubjectcode - AND A.yearname = B.year - AND A.monthname = B.month -)T1 -LEFT JOIN -( - SELECT - organ_code -- erp片区id - ,organ_name -- erp片区名称 - ,cost_comm_id -- 费控项目id - FROM dw.dim_organ_mapping -- 片区项目映射维度表 - where cost_comm_id is not null - GROUP BY - organ_code -- erp片区id - ,organ_name -- erp片区名称 - ,cost_comm_id -- 费控项目id -)T2 -ON T1.dimsubjectcode = T2.cost_comm_id -; \ No newline at end of file diff --git a/finereport/detail/住服比异常项目.sql b/finereport/xiazuan/2_operation/住服比异常项目.sql similarity index 76% rename from finereport/detail/住服比异常项目.sql rename to finereport/xiazuan/2_operation/住服比异常项目.sql index 69d605f..0d5f765 100644 --- a/finereport/detail/住服比异常项目.sql +++ b/finereport/xiazuan/2_operation/住服比异常项目.sql @@ -20,6 +20,14 @@ select end as occupancy_rate -- 入住率 from dws_operation_room_park_info_d where 1=1 -${if(len(p_area) == 0,"","and organ_code = '" + p_area+ "'")} + ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} group by -${if(len(p_area) == 0,"organ_name","comm_name")} -- 片区/项目 \ No newline at end of file +${if(len(p_area) == 0,"organ_name","comm_name")} + + +-- 【筛选框数据集: dic_erp片区】 + +SELECT DISTINCT + organ_code AS 片区id, + organ_name AS 片区名称 +FROM dim_organ_mapping \ No newline at end of file diff --git a/finereport/detail/计划到期明细.sql b/finereport/xiazuan/2_operation/计划到期明细.sql similarity index 61% rename from finereport/detail/计划到期明细.sql rename to finereport/xiazuan/2_operation/计划到期明细.sql index 68c23c3..1ed0e56 100644 --- a/finereport/detail/计划到期明细.sql +++ b/finereport/xiazuan/2_operation/计划到期明细.sql @@ -7,25 +7,27 @@ -- 【数据集: report_计划到期】 select - ${if(len(p_area) == 0,"coalesce(d.oa_organ_name,c.subcompanyname)","c.subcompanyname")} as p_area - ,d.oa_comm_id as oa_comm_id -- 项目id - ,d.oa_comm_name as oa_comm_name -- 项目名称 - ,d.oa_organ_code as oa_organ_code -- 片区id - ,d.oa_organ_name as oa_organ_name -- 片区名称 - ,b.subcompanyid1 as subcompanyid1 -- 公司id - ,c.subcompanyname as subcompanyname -- 公司名称 - ,c.supsubcomid as supsubcomid -- 父公司id - ,a.plan_name as plan_name -- 计划名称 - ,a.eval_criteria as plan_desc -- 计划内容 - ,a.plan_level as plan_level -- 计划等级 - ,left(a.start_date,7) as ym -- 计划开始年月 - ,a.start_dt as start_dt -- 计划开始时 - ,a.end_date as end_date -- 计划结束时间 + ${if(len(p_area) == 0,"c.organ_name","c.comm_name")} as p_area + ,c.oa_comm_id as oa_comm_id -- oa项目id + ,c.oa_comm_name as oa_comm_name -- oa项目名称 + ,c.oa_organ_code as oa_organ_code -- oa片区id + ,c.oa_organ_name as oa_organ_name -- oa片区名称 + ,c.organ_code as organ_code -- erp片区编码 + ,c.organ_name as organ_name -- erp片区名称 + ,c.comm_id as comm_id -- erp项目id + ,c.comm_name as comm_name -- erp项目名称 + ,b.subcompanyid1 as subcompanyid1 -- 公司id + ,a.plan_name as plan_name -- 计划名称 + ,a.eval_criteria as plan_desc -- 计划内容 + ,a.plan_level as plan_level -- 计划等级 + ,left(a.start_date,7) as ym -- 计划开始年月 + ,a.start_dt as start_dt -- 计划开始时 + ,a.end_date as end_date -- 计划结束时间 ,a.finish_date as finish_date -- 计划完成时间 ,a.input_date as input_date -- 计划录入时间 - ,a.day_diff as day_diff -- 距离计划结束天数 - ,a.executor as executor -- 执行人编码 - ,b.lastname as executor_name -- 执行人 + ,a.day_diff as day_diff -- 距离计划结束天数 + ,a.responsible_person1 as responsible_person1 -- 责任人编码 + ,b.lastname as executor_name -- 责任人名称 ,left(a.end_ym,7) as end_ym -- 计划结束年月 from ( @@ -33,7 +35,7 @@ from concat(left(trim(start_date),5),lpad(substring_index(substring_index(trim(start_date),'-',2),'-',-1),2,0),right(trim(start_date),3)) as start_date ,a.start_date as start_dt -- 计划开始时间 ,a.plan_level -- 计划等级 - ,jt.executor -- 执行人 责任人 口径可能不一致 + ,jt.responsible_person1 -- 责任人 ,a.plan_status -- 计划状态 ,a.input_date -- 录入时间 ,a.end_date -- 计划结束时间 @@ -44,11 +46,13 @@ from ,a.eval_criteria -- 评价标准 FROM dw.dwd_operations_plan_info_d a, JSON_TABLE ( - cast( CONCAT( '["', REPLACE ( executor, ',', '","' ), '"]' ) AS json ), - "$[*]" COLUMNS ( executor INT PATH "$" ) + cast( CONCAT( '["', REPLACE ( responsible_person1, ',', '","' ), '"]' ) AS json ), + "$[*]" COLUMNS ( responsible_person1 INT PATH "$" ) ) AS jt - WHERE TO_DAYS(a.end_date) - TO_DAYS(curdate()) <= 3 - AND TO_DAYS(a.end_date) - TO_DAYS(curdate()) >= 1 + -- WHERE TO_DAYS(a.end_date) - TO_DAYS(curdate()) <= 3 + -- AND TO_DAYS(a.end_date) - TO_DAYS(curdate()) >= 1 + where a.end_date > date_format(CURDATE() - INTERVAL 3 day,'%Y-%m-%d') + and a.end_date <= date_format(CURDATE(),'%Y-%m-%d') )a left join ( @@ -59,23 +63,26 @@ from from dw.ods_oa_hrmresource_d )b - on a.executor = b.id - inner join + on a.responsible_person1 = b.id + left join ( select - id - ,subcompanyname -- 公司名称 - ,supsubcomid -- 父公司id - from dw.ods_oa_hrmsubcompany_d - where 1 = 1 - ${if(len(p_area) == 0,"","and supsubcomid = '" + p_area + "'")} + distinct + organ_code -- erp片区id + ,organ_name -- erp片区名称 + ,comm_id -- erp项目id + ,comm_name -- erp项目名称 + ,oa_organ_code -- oa片区id + ,oa_organ_name -- oa片区名称 + ,oa_comm_id -- oa项目id + ,oa_comm_name -- oa项目名称 + from dim_organ_mapping -- 组织结构映射维度表 + where comm_id is not null )c - on b.subcompanyid1 = c.id - left join (select distinct oa_comm_id, oa_comm_name, oa_organ_code, oa_organ_name from dim_organ_mapping) d - on b.subcompanyid1 = d.oa_comm_id -where 1 = 1 + on b.subcompanyid1 = c.oa_comm_id + where 1 = 1 ${if(len(p_startdate) == 0,"","and left(a.end_ym,7) = '" + p_startdate + "'")} - + ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} diff --git a/finereport/detail/车位空置率明细.sql b/finereport/xiazuan/2_operation/车位空置率明细.sql similarity index 100% rename from finereport/detail/车位空置率明细.sql rename to finereport/xiazuan/2_operation/车位空置率明细.sql diff --git a/finereport/detail/项目明细弹窗.sql b/finereport/xiazuan/2_operation/项目明细弹窗.sql similarity index 63% rename from finereport/detail/项目明细弹窗.sql rename to finereport/xiazuan/2_operation/项目明细弹窗.sql index 8ef92d9..4c0d7fe 100644 --- a/finereport/detail/项目明细弹窗.sql +++ b/finereport/xiazuan/2_operation/项目明细弹窗.sql @@ -6,36 +6,31 @@ -- **************************************** -- 【数据集: report_project】 +-- 1. 财务 finance +-- 2. 运营 operation +-- 3. 物业 property +-- 4. 工程 engine +-- 5. 人力 5_manpower +-- 6. 创新 6_innovation +-- 7. 商业 7_business +-- 8. 法务 8_legal --- SELECT --- --- -- ${if(len(p_area) == 0,"t.organ_name","t.comm_name")} as p_area -- 片区/项目 --- t.organ_name as organ_name -- erp片区名称 --- ,t.comm_name as comm_name -- erp项目名称 --- ,${if(len(p_area) == 0,"'-'","t.ManageKindName")} as ManageKindName -- 管理性质名称 【项目归属】 --- ,${if(len(p_area) == 0,"'-'","t.StateName")} as StateName -- 业态 【项目业态】 --- ,sum(t.ContractArea) as ContractArea -- 合同面积 【建筑面积】 --- ,sum(t.TakeOverArea) as TakeOverArea -- 接管面积 【合约面积】 --- ,sum(t.ManageContractArea) as ManageContractArea -- 管理口径合同面积 【在管面积】 --- ,sum(t.room_num) as room_num -- 总户数 --- FROM --- ( SELECT - -- ${if(len(p_area) == 0,"B.organ_name","B.comm_name")} as p_area - -- ,A.CommId AS CommId -- 项目id 可关联maping表 - -- ${if(len(p_area) == 0,",'-'",",A.ManageKindName")} as newManageKind - -- ,A.ManageKind AS ManageKind -- 管理性质 【项目归属】 - A.ManageKindName AS ManageKindName -- 管理性质名称 【项目归属】 + -- ${if(len(p_area) == 0,"B.organ_name","B.comm_name")} as p_area + -- ,A.CommId AS CommId -- 项目id 可关联maping表 + -- ${if(len(p_area) == 0,",'-'",",A.ManageKindName")} as newManageKind + -- ,A.ManageKind AS ManageKind -- 管理性质 【项目归属】 + A.ManageKindName AS ManageKindName -- 管理性质名称 【项目归属】 ,A.ContractArea / 10000 AS ContractArea -- 合同面积 【建筑面积】 ,A.TakeOverArea / 10000 AS TakeOverArea -- 接管面积 【合约面积】 ,A.ManageContractArea / 10000 AS ManageContractArea -- 管理口径合同面积 【在管面积】 - -- ${if(len(p_area) == 0,",'-'",",A.StateName")} as newStateName + -- ${if(len(p_area) == 0,",'-'",",A.StateName")} as newStateName ,A.StateName AS StateName -- 业态 【项目业态】 ,C.room_num AS room_num -- 总户数 - -- ,A.Province AS Province -- 省 - -- ,A.City AS City -- 市 - -- ,A.County AS County -- 区 - -- ,B.organ_code AS organ_code -- erp片区id + -- ,A.Province AS Province -- 省 + -- ,A.City AS City -- 市 + -- ,A.County AS County -- 区 + ,B.organ_code AS organ_code -- erp片区id ,B.organ_name AS organ_name -- erp片区名称 -- ,B.comm_id AS -- erp项目id ,B.comm_name AS comm_name -- erp项目名称 @@ -62,6 +57,7 @@ FROM ,comm_id -- erp项目id ,comm_name -- erp项目名称 FROM dw.dim_organ_mapping -- 片区项目映射维度表 + where comm_id is not null and comm_name not like '%撤场%' and comm_name not like '%案场%' and comm_name not like '%禁用%' and length(comm_id) != 0 GROUP BY organ_code -- erp片区id ,organ_name -- erp片区名称 @@ -69,7 +65,7 @@ FROM ,comm_name -- erp项目名称 )B ON A.CommId = B.comm_id - JOIN + LEFT JOIN ( SELECT CommID @@ -79,8 +75,8 @@ FROM CommID )C ON A.CommId = C.CommID -where 1 = 1 - ${if(len(p_area) == 0,"","and organ_code = '" + p_area + "'")} + where 1 = 1 + ${IF(LEN(p_area)!=0," where t.organ_code IN ('"+JOINARRAY(p_area,"','")+"')","")} -- )t @@ -106,4 +102,3 @@ SELECT DISTINCT FROM dim_organ_mapping ; - From fe537724ec0670046e1a1bce1a4bb6f2ec106830 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 23 Jul 2024 14:07:25 +0800 Subject: [PATCH 39/89] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=AF=B4=E6=98=8E?= =?UTF-8?q?=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 282 ++++++++++++++++++++++++++++- doc/映射表规范.md => 映射表规范.md | 0 2 files changed, 281 insertions(+), 1 deletion(-) rename doc/映射表规范.md => 映射表规范.md (100%) diff --git a/README.md b/README.md index fc4c6ae..1cb7b64 100644 --- a/README.md +++ b/README.md @@ -1 +1,281 @@ -# 领悦看板项目 +# 领悦看板项目代码库 + +--- +## 一、代码范围说明 + +1.**数仓``dw``** + +- dim层表加工逻辑: dw/dim +- dwd层表加工逻辑: dw/dwd +- dws层表加工逻辑: dw/dws + +2.**帆软报表后台逻辑``finereport``** + +- 明细表加工逻辑 +- 大屏关键指标加工逻辑 +- 填报表目标库表及校验规则 + + +## 二、SQL开发规范分享 + +### 1. 建表脚本(DDL) + +**【建表语句】** + +命名规则示例: **create_dwd_cost_budget_data_d.sql** + +```sql +-- ***************************************** +-- 开发人员: 杨坤安 +-- 创建日期: 2024-07-18 +-- 功 能: 费控预算金额明细表 +-- ***************************************** +DROP TABLE IF EXISTS dw.dwd_cost_budget_data_d; +CREATE TABLE IF NOT EXISTS dw.dwd_cost_budget_data_d ( + dimaccountcode VARCHAR(255) COMMENT '预算科目编码' +,dimaccountname VARCHAR(255) COMMENT '预算科目名称' +,dimsubjectcode VARCHAR(255) COMMENT '组织机构编码' +,dimsubjectname VARCHAR(255) COMMENT '组织机构名称' +,yearname VARCHAR(50) COMMENT '年' +,totalcode VARCHAR(255) COMMENT '组织机构层级编码' +,monthname VARCHAR(50) COMMENT '月' +,buget VARCHAR(255) COMMENT '预算金额' +,occ VARCHAR(255) COMMENT '已占用金额' +,realfee VARCHAR(255) COMMENT '已使用金额' +,available VARCHAR(255) COMMENT '剩余可用金额' +,budgetfee_rate VARCHAR(50) COMMENT '预算执行率' +)COMMENT = '费控预算金额明细表' +``` + +**【修改表字段】** + +命名规则示例: **alter_dwd_cost_budget_data_d.sql** + +```sql +-- ***************************************** +-- 开发人员: 杨坤安 +-- 修改日期: 2024-07-18 +-- 修改内容: 字段修改 monthname -> month_name +-- ... -> ... +-- ***************************************** + +ALTER TABLE dw.dwd_cost_budget_data_d MODIFY COLUMN monthname month_name; +``` + +**【字段命名规范】** + +- 字段中文名翻译过来的单词来命名 + +- 如果翻译的单词太长,可以适当截取单词,尽量直观一点 + +- 不要使用拼音、关键字命名字段 + +**【表命名规范】** + +数仓层\_业务域\_主要业务数据_跑数天(D|M|Q|Y|) + +如: dwd_cost_budget_data_d + + + +### 2. 数据转换、加载(DML) + +**【关键字大写】** + +使用select、from、where等关键字时使用大写 + +**【层级关联表别名】** + +多个表关联,最外层用T1、T2、T3等顺序命名 + +里面关联子表使用A、B、C、D顺序命名 + +子表中关联使用A1、A2、B1、B2顺序命名 + +**【注释】** + +脚本头注释: 写明谁开发的、开发日期、改段sql主要的功能是什么 + +字段注释: 每个字段必写字段的中文名称,方便理解 + +复杂功能注释: 如果有较复杂的加工逻辑,简要注释写一下该段的加工说明 + +**【其他】** + +字段分割符`,`放到第一列,批量修改比较容易 + +注释间隔、缩进怎么整齐怎么来 + +**【示例】** + +```sql +truncate dw.dwd_cost_detail_data_d; +INSERT into dw.dwd_cost_detail_data_d +SELECT + T1.yearname AS yearname -- 年 + ,T1.monthname AS monthname -- 月 + ,T2.organ_code AS organ_code -- 片区ID + ,T2.organ_name AS organ_name -- 片区名称 + ,T1.cost_code AS cost_code -- 成本类型编码: LC:行政成本 AC:人力成本 + ,T1.cost_name AS cost_name -- 成本类型名称 + ,T1.dimsubjectcode AS dimsubjectcode -- 组织机构编码 + ,T1.dimsubjectname AS dimsubjectname -- 组织机构名称 + ,T1.totalcode AS totalcode -- 组织机构层级编码 + ,T1.dimaccountcode AS dimaccountcode -- 预算科目编码 + ,T1.dimaccountname AS dimaccountname -- 预算科目名称 + ,T1.buget AS buget -- 预算金额 + ,T1.occ AS occ -- 已占用金额 + ,T1.realfee AS realfee -- 已使用金额 + ,T1.available AS available -- 剩余可用金额 + ,T1.budgetfee_rate AS budgetfee_rate -- 预算执行率 + ,T1.originalcurrency AS originalcurrency -- 调整金额 + ,T1.target_fee AS target_fee -- 目标值 + ,T1.actual_fee AS actual_fee -- 实际值 + ,ROUND((T1.target_fee - T1.actual_fee),2) AS diff_amount -- 差额 + ,case when T1.target_fee = 0 then '0%' else concat(ROUND((T1.actual_fee / T1.target_fee)*100,2),'%') end AS implementation_rate -- 执行率 +FROM +( + SELECT + A.yearname AS yearname -- 年 + ,A.monthname AS monthname -- 月 + ,'LC' AS cost_code -- 成本类型编码: LC:行政成本 AC:人力成本 + ,'行政成本' AS cost_name -- 成本类型名称 + ,A.dimsubjectcode AS dimsubjectcode -- 组织机构编码 + ,A.dimsubjectname AS dimsubjectname -- 组织机构名称 + ,A.totalcode AS totalcode -- 组织机构层级编码 + ,A.dimaccountcode AS dimaccountcode -- 预算科目编码 + ,A.dimaccountname AS dimaccountname -- 预算科目名称 + ,A.buget AS buget -- 预算金额 + ,A.occ AS occ -- 已占用金额 + ,A.realfee AS realfee -- 已使用金额 + ,A.available AS available -- 剩余可用金额 + ,A.budgetfee_rate AS budgetfee_rate -- 预算执行率 + ,COALESCE(B.originalcurrency,0) AS originalcurrency -- 调整金额 + ,ROUND((A.buget - COALESCE(B.originalcurrency,0)),2) AS target_fee -- 目标值 + ,A.realfee AS actual_fee -- 实际值 + -- ,'' AS diff_amount -- 差额 + -- ,'' AS implementation_rate -- 执行率 + FROM + ( + SELECT + dimaccountcode -- 预算科目编码 + ,dimaccountname -- 预算科目名称 + ,dimsubjectcode -- 组织机构编码 + ,dimsubjectname -- 组织机构名称 + ,yearname -- 年 + ,totalcode -- 组织机构层级编码 + ,monthname -- 月 + ,buget -- 预算金额 + ,occ -- 已占用金额 + ,realfee -- 已使用金额 + ,available -- 剩余可用金额 + ,budgetfee_rate -- 预算执行率 + FROM dw.dwd_cost_budget_data_d -- 预算金额明细表 + WHERE dimaccountcode IN('WY0402','WY040201','WY040202','WY040203','WY040204','WY040205','WY040206','WY040207','WY040208','WY040209','WY040210','WY040211','WY040212','WY040213','WY040214','WY040215','WY040216') + )A + LEFT JOIN + ( + SELECT + year -- 年 + ,month -- 月 + ,dimsubjectcode -- 调整组织机构编码 + ,dimaccountcode -- 调整预算科目编码 + ,originalcurrency -- 调整金额 + FROM dw.dwd_cost_adjust_data_d -- 调整金额明细表 + WHERE dimaccountcode IN('WY0402','WY040201','WY040202','WY040203','WY040204','WY040205','WY040206','WY040207','WY040208','WY040209','WY040210','WY040211','WY040212','WY040213','WY040214','WY040215','WY040216') + )B + ON A.dimaccountcode = B.dimaccountcode + AND A.dimsubjectcode = B.dimsubjectcode + AND A.yearname = B.year + AND A.monthname = B.month + UNION ALL + SELECT + A.yearname AS yearname -- 年 + ,A.monthname AS monthname -- 月 + ,'AC' AS cost_code -- 成本类型编码: LC:行政成本 AC:人力成本 + ,'人力成本' AS cost_name -- 成本类型名称 + ,A.dimsubjectcode AS dimsubjectcode -- 组织机构编码 + ,A.dimsubjectname AS dimsubjectname -- 组织机构名称 + ,A.totalcode AS totalcode -- 组织机构层级编码 + ,A.dimaccountcode AS dimaccountcode -- 预算科目编码 + ,A.dimaccountname AS dimaccountname -- 预算科目名称 + ,A.buget AS buget -- 预算金额 + ,A.occ AS occ -- 已占用金额 + ,A.realfee AS realfee -- 已使用金额 + ,A.available AS available -- 剩余可用金额 + ,A.budgetfee_rate AS budgetfee_rate -- 预算执行率 + ,COALESCE(B.originalcurrency,0) AS originalcurrency -- 调整金额 + ,ROUND((A.buget - COALESCE(B.originalcurrency,0)),2) AS target_fee -- 目标值 + ,A.realfee AS actual_fee -- 实际值 + -- ,'' AS diff_amount -- 差额 + -- ,'' AS implementation_rate -- 执行率 + FROM + ( + SELECT + dimaccountcode -- 预算科目编码 + ,dimaccountname -- 预算科目名称 + ,dimsubjectcode -- 组织机构编码 + ,dimsubjectname -- 组织机构名称 + ,yearname -- 年 + ,totalcode -- 组织机构层级编码 + ,monthname -- 月 + ,buget -- 预算金额 + ,occ -- 已占用金额 + ,realfee -- 已使用金额 + ,available -- 剩余可用金额 + ,budgetfee_rate -- 预算执行率 + FROM dw.dwd_cost_budget_data_d -- 预算金额明细表 + WHERE dimaccountcode IN('WY0401','WY040101','WY040102','WY040103','WY040104','WY040105','WY040106','WY040107','WY040108','WY040109','WY040110','WY040111','WY040112','WY040113','WY040114') + )A + LEFT JOIN + ( + SELECT + year -- 年 + ,month -- 月 + ,dimsubjectcode -- 调整组织机构编码 + ,dimaccountcode -- 调整预算科目编码 + ,originalcurrency -- 调整金额 + FROM dw.dwd_cost_adjust_data_d -- 调整金额明细表 + WHERE dimaccountcode IN('WY0401','WY040101','WY040102','WY040103','WY040104','WY040105','WY040106','WY040107','WY040108','WY040109','WY040110','WY040111','WY040112','WY040113','WY040114') + )B + ON A.dimaccountcode = B.dimaccountcode + AND A.dimsubjectcode = B.dimsubjectcode + AND A.yearname = B.year + AND A.monthname = B.month +)T1 +LEFT JOIN +( + SELECT + organ_code -- erp片区id + ,organ_name -- erp片区名称 + ,cost_comm_id -- 费控项目id + FROM dw.dim_organ_mapping -- 片区项目映射维度表 + where cost_comm_id is not null + GROUP BY + organ_code -- erp片区id + ,organ_name -- erp片区名称 + ,cost_comm_id -- 费控项目id +)T2 +ON T1.dimsubjectcode = T2.cost_comm_id +; +``` + + + +### 3. 优化SQL查询 + +- 避免使用``select * from xxx``,需要哪些字段,select哪些字段即可; + +- 需要where过滤的的,在关联前进行过滤,避免关联后再进行过滤; + +- 较为复杂的转换加工进行落表; + + + + + + + +--- + + diff --git a/doc/映射表规范.md b/映射表规范.md similarity index 100% rename from doc/映射表规范.md rename to 映射表规范.md From fad549827a7c8d837d5fe461cd9c32f7dcfce5b4 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 23 Jul 2024 21:40:49 +0800 Subject: [PATCH 40/89] =?UTF-8?q?finereport=E9=80=BB=E8=BE=91=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 6 + dw/dws/dws_engine_equipment_in_good_d.sql | 5 +- .../dws_engine_equipment_inspect_task_m.sql | 7 +- finereport/kanban/mobile/创新生态_mobile.sql | 191 ++++++++++++++++++ finereport/kanban/mobile/商业_mobile.sql | 61 ++++++ finereport/kanban/pc/工程.sql | 121 +++++++++++ finereport/kanban/pc/总裁.sql | 17 ++ finereport/xiazuan/1_finance/1_收缴下钻.sql | 103 ++++++++++ .../xiazuan/1_finance/2_今日收费情况.sql | 17 ++ .../xiazuan/1_finance/3_现金流贡献图.sql | 20 ++ .../xiazuan/1_finance/4_收入预算完成情况.sql | 39 ++++ .../xiazuan/2_operation/合同到期明细.sql | 1 + .../3_property/1_客户满意度得分明细.sql | 78 +++++++ 13 files changed, 662 insertions(+), 4 deletions(-) create mode 100644 finereport/kanban/mobile/创新生态_mobile.sql create mode 100644 finereport/kanban/mobile/商业_mobile.sql create mode 100644 finereport/kanban/pc/工程.sql create mode 100644 finereport/kanban/pc/总裁.sql create mode 100644 finereport/xiazuan/1_finance/1_收缴下钻.sql create mode 100644 finereport/xiazuan/1_finance/2_今日收费情况.sql create mode 100644 finereport/xiazuan/1_finance/3_现金流贡献图.sql create mode 100644 finereport/xiazuan/1_finance/4_收入预算完成情况.sql create mode 100644 finereport/xiazuan/2_operation/合同到期明细.sql create mode 100644 finereport/xiazuan/3_property/1_客户满意度得分明细.sql diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 8b050c8..c3f8137 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -3,9 +3,15 @@ + + + + + + diff --git a/dw/dws/dws_engine_equipment_in_good_d.sql b/dw/dws/dws_engine_equipment_in_good_d.sql index 0e00d9a..c6c7050 100644 --- a/dw/dws/dws_engine_equipment_in_good_d.sql +++ b/dw/dws/dws_engine_equipment_in_good_d.sql @@ -18,4 +18,7 @@ from dim_engine_equipment_d a inner join (select distinct organ_code, organ_name, comm_id, comm_name from dim_organ_mapping) c on a.CommID = c.comm_id group by - c.organ_code, c.organ_name, c.comm_id, c.comm_name \ No newline at end of file + c.organ_code, c.organ_name, c.comm_id, c.comm_name + +; +SELECT * FROM dim_engine_equipment_d where SystemId = '8ae5eea4-f0e0-4106-a022-ad2b370cad80' \ No newline at end of file diff --git a/dw/dws/dws_engine_equipment_inspect_task_m.sql b/dw/dws/dws_engine_equipment_inspect_task_m.sql index be8ed32..16dcc4f 100644 --- a/dw/dws/dws_engine_equipment_inspect_task_m.sql +++ b/dw/dws/dws_engine_equipment_inspect_task_m.sql @@ -1,10 +1,11 @@ select organ_code, organ_name, comm_id, comm_name , date_format(TaskEndTime, '%Y%m') task_ym - , sum(case when TaskStatue = 2 then 1 else 0 end) task_finish_num - , count(*) task_num + , sum(case when TaskStatue = 2 then 1 else 0 end) task_finish_num -- 完成数量 + , count(*) task_num -- 任务数量 + ,sum(case when TaskStatue = 2 then 1 else 0 end) / count(*) * 100 as rate from dwd_engine_equipment_inspection_task_d a - left join (select distinct organ_code, organ_name, comm_id, comm_name from dim_organ_mapping) b + join (select distinct organ_code, organ_name, comm_id, comm_name from dim_organ_mapping) b on a.CommId = b.comm_id group by organ_code, organ_name, comm_id, comm_name diff --git a/finereport/kanban/mobile/创新生态_mobile.sql b/finereport/kanban/mobile/创新生态_mobile.sql new file mode 100644 index 0000000..27c1191 --- /dev/null +++ b/finereport/kanban/mobile/创新生态_mobile.sql @@ -0,0 +1,191 @@ +-- dic_1_片区 + + +SELECT DISTINCT + organ_code AS 片区id, + organ_name AS 片区名称 +FROM dim_organ_mapping +; + + + +-- report_1_空间运营 + + WITH T1 AS +(SELECT + organ_code, + organ_name, + assessment_occupany_rate AS 出租率 +FROM dws_point_occupancy_rate_summary_pq +WHERE 1=1 + AND ym = '${REPLACE(p_ym,"-","")}' + ${IF(p_kj = "低于50%","AND assessment_occupany_rate <= 50","AND assessment_occupany_rate >= 50")} + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_prgject)>0," AND comm_id IN ('"+JOINARRAY(p_prgject,"','")+"')", "")} + ) +SELECT + ROW_NUMBER() OVER (ORDER BY 出租率) AS 序号, + organ_code, + organ_name, + 出租率 +FROM T1 +ORDER BY 出租率 ${IF(p_kj = "低于50%","ASC","DESC")} +; + +-- report_2_新零售 +WITH T1 AS ( + select + organ_code, + organ_name, + sum(sale_amt)/10000 sale_amt + from dws_innoveco_new_retail_m + where create_ym = '${REPLACE(p_ym,"-","")}' + group by organ_code,organ_name + ),T2 AS ( + SELECT + organ_code,organ_name, + SUM(IFNULL(index_retail_target,0)) AS sale_target, + SUM(index_retail_fact) AS sale_fact + FROM ods_innoveco_offlinesales + WHERE `year_month` = '${REPLACE(p_ym,"-","")}' + GROUP BY organ_code,organ_name + ),T3 AS ( + SELECT + T1.organ_code, + T1.organ_name, + T2.sale_target, + (T1.sale_amt + T2.sale_fact) AS sale_amt, + IFNULL((T1.sale_amt + T2.sale_fact) / T2.sale_target,0) AS 销售完成率 + FROM T1 LEFT JOIN T2 ON T1.organ_code = T2.organ_code + ) +SELECT + ROW_NUMBER() OVER (ORDER BY 销售完成率) AS 序号, + organ_code, + organ_name, + sale_target, + sale_amt, + 销售完成率 +FROM T3 +WHERE 1=1 + ${IF(p_xls = "低于50%","AND 销售完成率 <= 0.5","AND 销售完成率 >= 0.5")} +ORDER BY 销售完成率 ${IF(p_xls = "低于50%","ASC","DESC")} +; + +-- report_3_小悦到家 + +WITH T1 AS ( + select + organ_code, + organ_name, + sum(xydj_amt) sale_amt + from dws_innoveco_new_retail_m + where create_ym = '${REPLACE(p_ym,"-","")}' + group by organ_code,organ_name + ),T2 AS ( + SELECT + organ_code,organ_name, + SUM(IFNULL(index_xiaoyuedj_target,0)) AS sale_target, + SUM(index_yuhetai_fact) AS sale_fact + FROM ods_innoveco_offlinesales + WHERE `year_month` = '${REPLACE(p_ym,"-","")}' + GROUP BY organ_code,organ_name + ),T3 AS ( + SELECT + T1.organ_code, + T1.organ_name, + T2.sale_target, + (T1.sale_amt + T2.sale_fact) AS sale_amt, + IFNULL((T1.sale_amt + T2.sale_fact) / T2.sale_target,0) AS 销售完成率 + FROM T1 LEFT JOIN T2 ON T1.organ_code = T2.organ_code + ) +SELECT + ROW_NUMBER() OVER (ORDER BY 销售完成率) AS 序号, + organ_code, + organ_name, + sale_target, + sale_amt, + 销售完成率 +FROM T3 +WHERE 1=1 + ${IF(p_xydj = "低于50%","AND 销售完成率 <= 0.5","AND 销售完成率 >= 0.5")} +ORDER BY 销售完成率 ${IF(p_xydj = "低于50%","ASC","DESC")} +; + + +-- report_4_御和泰 + +WITH T1 AS ( + select + organ_code, + organ_name, + sum(yht_amt)/10000 sale_amt + from dws_innoveco_new_retail_m + where create_ym = '${REPLACE(p_ym,"-","")}' + group by organ_code,organ_name + ),T2 AS ( + SELECT + organ_code,organ_name, + SUM(IFNULL(index_yuhetai_target,0)) AS sale_target, + SUM(index_xiaoyuedj_fact) AS sale_fact + FROM ods_innoveco_offlinesales + WHERE `year_month` = '${REPLACE(p_ym,"-","")}' + GROUP BY organ_code,organ_name + ),T3 AS ( + SELECT + T1.organ_code, + T1.organ_name, + T2.sale_target, + (T1.sale_amt + T2.sale_fact) AS sale_amt, + IFNULL((T1.sale_amt + T2.sale_fact) / T2.sale_target,0) AS 销售完成率 + FROM T1 LEFT JOIN T2 ON T1.organ_code = T2.organ_code + ) +SELECT + ROW_NUMBER() OVER (ORDER BY 销售完成率) AS 序号, + organ_code, + organ_name, + sale_target, + sale_amt, + 销售完成率 +FROM T3 +WHERE 1=1 + ${IF(p_yht = "低于50%","AND 销售完成率 <= 0.5","AND 销售完成率 >= 0.5")} +ORDER BY 销售完成率 ${IF(p_yht = "低于50%","ASC","DESC")} +; + + +-- report_指标卡 + + +WITH T1 AS (/*各类别应收与实收*/ + SELECT + index_type, + SUM(IFNULL(index_receivable,0)) AS 应收金额, + SUM(IFNULL(index_receipts,0)) AS 实收金额 + FROM ods_caiwu_profit + WHERE 1=1 + AND `year_month` = '${REPLACE(p_ym,"-","")}' + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_prgject)>0," AND comm_id IN ('"+JOINARRAY(p_prgject,"','")+"')", "")} + GROUP BY index_type + ) +SELECT + IFNULL(SUM(CASE WHEN index_type = '附属资源/空间运营' THEN 实收金额 ELSE 0 END),0) AS 空间运营实收, + IFNULL(SUM(CASE WHEN index_type = '附属资源/空间运营' THEN 实收金额 / 应收金额 ELSE 0 END),0) AS 空间运营完成率, + IFNULL(SUM(CASE WHEN index_type = '美居' THEN 实收金额 ELSE 0 END),0) AS 美居实收, + IFNULL(SUM(CASE WHEN index_type = '美居' THEN 实收金额 / 应收金额 ELSE 0 END),0) AS 美居完成率, + IFNULL(SUM(CASE WHEN index_type = '社商/新零售' THEN 实收金额 ELSE 0 END),0) AS 新零售实收, + IFNULL(SUM(CASE WHEN index_type = '社商/新零售' THEN 实收金额 / 应收金额 ELSE 0 END),0) AS 新零售完成率, + IFNULL(SUM(CASE WHEN index_type = '资产运营/资产租售' THEN 实收金额 ELSE 0 END),0) AS 资产出租实收, + IFNULL(SUM(CASE WHEN index_type = '资产运营/资产租售' THEN 实收金额 / 应收金额 ELSE 0 END),0) AS 资产出租完成率, + IFNULL(SUM(实收金额),0) AS 全部实收, + IFNULL(SUM(实收金额) / SUM(应收金额),0) AS 完成率 +FROM T1 +; + + +-- 全国综合考核率 + +SELECT + CONCAT(assessment_occupany_rate,'%') AS 完成率 +FROM dws_point_occupancy_rate_summary_all +WHERE ym = '${REPLACE(p_ym,"-","")}' \ No newline at end of file diff --git a/finereport/kanban/mobile/商业_mobile.sql b/finereport/kanban/mobile/商业_mobile.sql new file mode 100644 index 0000000..ef7a12c --- /dev/null +++ b/finereport/kanban/mobile/商业_mobile.sql @@ -0,0 +1,61 @@ +-- dict_1_片区 + +SELECT DISTINCT + organ_code AS 片区id, + organ_name AS 片区名称 +FROM dim_organ_mapping +; + + + +-- report_出租分析组合图 + +SELECT + `type`, + SUM(IFNULL(construction_area,0))/10000 AS 资产面积, + SUM(IFNULL(lease_area,0))/10000 AS 出租面积, + SUM(IFNULL(lease_area,0))/SUM(IFNULL(construction_area,0)) AS 出租率 +FROM dws_business_rent_rate_d + ${IF(LEN(p_project) > 0," AND project_id IN ('"+JOINARRAY(p_project,"','")+"')", "")} +GROUP BY `type` +; + + +-- 出租率 + +SELECT + `type` + , sum(lease_area)/sum(construction_area) rent_rate +FROM dws_business_rent_rate_d +WHERE 1=1 + ${IF(LEN(p_project) > 0," AND project_id IN ('"+JOINARRAY(p_project,"','")+"')", "")} +group by `type` +; + + +-- 出租面积 + +SELECT + project_id + , project_name + , `type` + , construction_area/10000 construction_area + , lease_area/10000 lease_area + , lease_area/construction_area rent_rate +FROM dws_business_rent_rate_d + ${IF(LEN(p_project) > 0," AND project_id IN ('"+JOINARRAY(p_project,"','")+"')", "")} +; + + +-- 收款金额 + +SELECT + project_id + , project_name + , accrual_month + , current_sure_money/10000 current_sure_money + , received_money/10000 received_money + , areare_money/10000 areare_money +FROM dws_business_bill_m +where left(accrual_month,7) = '${p_ym}' + ${IF(LEN(p_project) > 0," AND project_id IN ('"+JOINARRAY(p_project,"','")+"')", "")} \ No newline at end of file diff --git a/finereport/kanban/pc/工程.sql b/finereport/kanban/pc/工程.sql new file mode 100644 index 0000000..3ac5c07 --- /dev/null +++ b/finereport/kanban/pc/工程.sql @@ -0,0 +1,121 @@ +-- 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 ${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(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 \ No newline at end of file diff --git a/finereport/kanban/pc/总裁.sql b/finereport/kanban/pc/总裁.sql new file mode 100644 index 0000000..fc641c3 --- /dev/null +++ b/finereport/kanban/pc/总裁.sql @@ -0,0 +1,17 @@ +select +concat(right(ym,2) + 0 , '月') ym +, sum(plan_num) plan_num +, sum(plan_complete_num) plan_complete_num +, sum(plan_incomplete_num) plan_incomplete_num +, sum(plan_complete_num) / sum(plan_num) plan_complete_rate +, sum(plan_adjust_num) plan_adjust_num +, sum(plan_adjust_num) / sum(plan_num) plan_adjust_rate +from dws_operation_plan_summary_m a +left join (select distinct organ_code, organ_name, comm_id, comm_name +, oa_organ_code, oa_organ_name, oa_comm_id, oa_comm_name from dim_organ_mapping where comm_id is not null) b +on a.subcompanyid = b.oa_comm_id +where 1=1 +${if(len(organ)=0,"","and organ_code = '"+organ+"'")} +and left(ym,4) = '2024' +group by ym +order by ym asc \ No newline at end of file diff --git a/finereport/xiazuan/1_finance/1_收缴下钻.sql b/finereport/xiazuan/1_finance/1_收缴下钻.sql new file mode 100644 index 0000000..0262f4d --- /dev/null +++ b/finereport/xiazuan/1_finance/1_收缴下钻.sql @@ -0,0 +1,103 @@ +-- dic_门店 + + +SELECT DISTINCT + comm_id AS 项目id,/*门店*/ + comm_name AS 项目名称 +FROM dim_organ_mapping +WHERE 1=1 + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + + +-- dic_片区 + + +SELECT DISTINCT + organ_code AS 片区id, + organ_name AS 片区名称 +FROM dim_organ_mapping + + +-- dict_费用类型 + +select distinct ParentCostCode, ParentCostName +from dws_finance_fees_serial_m +order by ParentCostCode asc + + +-- report_收缴率 + + +select + ${if(len(p_area) == 0,"a.organ_code code, a.organ_name name,","a.comm_id code, a.comm_name name,")} + a.ym, ParentCostCode, ParentCostName + , (pr_paid_cu_amt + cu_paid_cu_amt + pr_exempt_cu_amt + cu_exempt_cu_amt)/10000 cu_paid_amt + , (cu_receivable_amt + pr_exempt_cu_amt + cu_exempt_cu_amt)/10000 cu_receivable_amt + , (- cu_paid_pr_amt + cu_offset_pr_amt)/10000 pr_paid_amt + , (pr_total_receivable_amt + pr_total_received_amt + cu_early_exempt_pr_amt + cu_exempt_pr_amt)/10000 pr_receivable_amt + , case when a.ParentCostCode = '0001' then b.index_dq_target else 0 end cu_coll_rate_target + , case when a.ParentCostCode = '0001' then b.index_wq_target else 0 end pr_coll_rate_target + , case when a.ParentCostCode = '0008' then b.index_sd_target + when a.ParentCostCode = '0007' then b.index_dj_target else 0 end total_coll_rate_target +from dws_finance_fees_serial_m a + left join ods_finance_collection_target_area b + on a.organ_code = b.organ_code and a.ym = b.ym + left join ods_finance_collection_target_project c + on a.comm_id = c.comm_id and a.ym = c.ym +where 1=1 + ${if(len(p_startdate) == 0,"","and a.ym = '" + p_startdate + "'")} + ${if(len(p_feestype) == 0,"","and a.ParentCostCode = '" + p_feestype+ "'")} + ${if(len(p_area) == 0,"","and a.organ_code = '" + p_area+ "'")} +; + + +-- report_收缴率目标 + + +select + organ_code code + , organ_name name + , ym + , index_dq_target + , index_wq_target + , index_sd_target + , index_dj_target + , index_ac_target_dq + , index_ac_target_wq + , index_ac_target_zh +from ods_finance_collection_target_area +where 1=1 + ${if(len(p_startdate) == 0,"","and ym = '" + p_startdate + "'")} +union all +select + comm_id code + , comm_name name + , ym + , index_dq_target + , index_wq_target + , index_sd_target + , index_dj_target + , index_ac_target_dq + , index_ac_target_wq + , index_ac_target_zh +from ods_finance_collection_target_project +where 1=1 + ${if(len(p_startdate) == 0,"","and ym = '" + p_startdate + "'")} + + +-- report_中科目收缴率 + +select + b.organ_code, b.organ_name, b.comm_id, b.comm_name, ym + ${if(len(p_feestype) == 0,", ParentCostCode CostCode, ParentCostName CostName",", MiddleCostCode CostCode, MiddleCostName CostName")} + , (pr_paid_cu_amt + cu_paid_cu_amt + pr_exempt_cu_amt + cu_exempt_cu_amt)/10000 cu_paid_amt + , (cu_receivable_amt + pr_exempt_cu_amt + cu_exempt_cu_amt)/10000 cu_receivable_amt + , (- cu_paid_pr_amt + cu_offset_pr_amt)/10000 pr_paid_amt + , (pr_total_receivable_amt + pr_total_received_amt + cu_early_exempt_pr_amt + cu_exempt_pr_amt)/10000 pr_receivable_amt +from dwd_finance_fees_serial_d a + inner 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 1=1 + ${if(len(p_startdate) == 0,"","and ym = '" + p_startdate + "'")} + ${if(len(p_feestype) == 0,"","and ParentCostCode = '" + p_feestype+ "'")} + ${if(len(p_area) == 0,"","and b.organ_code = '" + p_area+ "'")} \ No newline at end of file diff --git a/finereport/xiazuan/1_finance/2_今日收费情况.sql b/finereport/xiazuan/1_finance/2_今日收费情况.sql new file mode 100644 index 0000000..89b39ce --- /dev/null +++ b/finereport/xiazuan/1_finance/2_今日收费情况.sql @@ -0,0 +1,17 @@ +-- dic_片区 + +SELECT DISTINCT + organ_code AS 片区id, + organ_name AS 片区名称 +FROM dim_organ_mapping + + +-- report_今日收费 + + +select * from dws_finance_today_fees_d +where 1=1 + ${if(len(p_area) == 0,"","and organ_code = '" + p_area+ "'")} +order by organ_code, comm_id + + diff --git a/finereport/xiazuan/1_finance/3_现金流贡献图.sql b/finereport/xiazuan/1_finance/3_现金流贡献图.sql new file mode 100644 index 0000000..57511f6 --- /dev/null +++ b/finereport/xiazuan/1_finance/3_现金流贡献图.sql @@ -0,0 +1,20 @@ +-- dic_片区 + + +SELECT DISTINCT + organ_code AS 片区id, + organ_name AS 片区名称 +FROM dim_organ_mapping + + +-- report_现金流 + +select + ${if(len(p_area) == 0,"organ_name name","comm_name name")} + , sum(sum_cash) sum_cash +from ods_caiwu_fullaperture +where 1=1 + ${if(len(p_startdate) == 0,"","and yr_month = '" + left(p_startdate,4) + right(p_startdate,2) + "'")} + ${if(len(p_area) == 0,"","and organ_code = '" + p_area+ "'")} +group by ${if(len(p_area) == 0,"organ_name","comm_name")} +order by sum(sum_cash) desc \ No newline at end of file diff --git a/finereport/xiazuan/1_finance/4_收入预算完成情况.sql b/finereport/xiazuan/1_finance/4_收入预算完成情况.sql new file mode 100644 index 0000000..de1ba97 --- /dev/null +++ b/finereport/xiazuan/1_finance/4_收入预算完成情况.sql @@ -0,0 +1,39 @@ +-- dic_门店 + +SELECT DISTINCT + comm_id AS 项目id,/*门店*/ + comm_name AS 项目名称 +FROM dim_organ_mapping +WHERE 1=1 + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + + + +-- dic_片区 + +SELECT DISTINCT + organ_code AS 片区id, + organ_name AS 片区名称 +FROM dim_organ_mapping + + +-- report_收入成本利润预算填报 + +select + ${if(len(p_area) == 0,"organ_code code, organ_name name,","comm_id code, comm_name name,")} + yr_month, category, yslx, index_income_target, index_income_fact, income_completion_rate +from( + select organ_code, organ_name, comm_id, comm_name, yr_month, category, '收入' yslx, index_income_target, index_income_fact, income_completion_rate + from ods_caiwu_feecollection + union all + select organ_code, organ_name, comm_id, comm_name, yr_month, category, '成本' yslx, index_cost_target, index_cost_fact, cost_completion_rate + from ods_caiwu_feecollection + union all + select organ_code, organ_name, comm_id, comm_name, yr_month, category, '利润' yslx, index_profit_target, profit_completion_rate, income_completion_rate + from ods_caiwu_feecollection + union all + select organ_code, organ_name, comm_id, comm_name, yr_month, category, '市拓' yslx, index_market_target, index_market_fact, market_completion_rate + from ods_caiwu_feecollection + ) a where yslx = ${"'" + p_yslx + "'"} + ${if(len(p_startdate) == 0,"","and yr_month = '" + p_startdate + "'")} + ${if(len(p_area) == 0,"","and organ_code = '" + p_area+ "'")} diff --git a/finereport/xiazuan/2_operation/合同到期明细.sql b/finereport/xiazuan/2_operation/合同到期明细.sql new file mode 100644 index 0000000..dde0509 --- /dev/null +++ b/finereport/xiazuan/2_operation/合同到期明细.sql @@ -0,0 +1 @@ +-- todo \ No newline at end of file diff --git a/finereport/xiazuan/3_property/1_客户满意度得分明细.sql b/finereport/xiazuan/3_property/1_客户满意度得分明细.sql new file mode 100644 index 0000000..297ef4a --- /dev/null +++ b/finereport/xiazuan/3_property/1_客户满意度得分明细.sql @@ -0,0 +1,78 @@ +-- dict_分析视角 + +WITH T1 AS ( + SELECT '片区' AS 维度 + UNION ALL + SELECT '业务条线' AS 维度 +/*UNION ALL +SELECT '生命周期' AS 维度*/ +) +SELECT 维度 FROM T1 +WHERE 1=1 + + +-- report_1_按片区得分 + +SELECT + organ_name, + SUM(IFNULL(index_mydf,0)) AS 满意得分 +FROM ods_wuye_complaint_half_year +WHERE yr = '${p_yr}' + AND t_quarter = '${p_jd}' +GROUP BY organ_name + + +-- report_1_按业务条线得分 + + +SELECT + business AS 业务条线, + index_df AS 最终得分 +FROM ods_wuye_complaint_business +WHERE yr = '${p_yr}' + AND jd = '${p_jd}' + + +-- report_表格1 + + WITH T1 AS (/*各片区目标*/ +SELECT DISTINCT + organ_name, + organ_target +FROM ods_wuye_satisfaction_target +WHERE yr = '${p_yr}' +),T2 AS (/*各片区得分*/ +SELECT + organ_name, + index_wl_yxybl AS 稳老有效样本量, + index_wl_myl AS 稳老满意量, + index_mwl_yxybl AS 磨稳老有效样本量, + index_mwl_myl AS 磨稳老满意量, + index_mydf AS 满意得分 +FROM ods_wuye_complaint_half_year +WHERE yr = '${p_yr}' + AND t_quarter = '${p_jd}' +) +SELECT + T1.organ_name AS 片区名称, + '${p_jd}' AS 季度, + T2.满意得分, + T1.organ_target AS 片区目标, + T2.磨稳老有效样本量, + T2.磨稳老满意量 +FROM T1 LEFT JOIN T2 ON T1.organ_name = T2.organ_name + + +-- report_表格2 + +SELECT + organ_name AS 片区名称, + SUM(CASE WHEN business = '安全秩序管理' THEN index_df ELSE 0 END ) AS 安全秩序管理, + SUM(CASE WHEN business = '保洁服务' THEN index_df ELSE 0 END ) AS 保洁服务, + SUM(CASE WHEN business = '绿化维护' THEN index_df ELSE 0 END ) AS 绿化维护, + SUM(CASE WHEN business = '客服服务' THEN index_df ELSE 0 END ) AS 客服服务, + SUM(CASE WHEN business = '上门维修服务' THEN index_df ELSE 0 END ) AS 上门维修服务 +FROM ods_wuye_complaint_business +WHERE yr = '${p_yr}' + AND jd = '${p_jd}' +GROUP BY organ_name From b0f855b9e9092046dc3dcb9fa904950e7015b5e9 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Wed, 24 Jul 2024 22:31:22 +0800 Subject: [PATCH 41/89] =?UTF-8?q?=E5=9B=9B=E5=A4=A7=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=E6=8C=87=E6=A0=87=E5=AE=8C=E6=88=90=E6=83=85=E5=86=B5=E5=A1=AB?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8+=E5=B7=A1=E6=9F=A5=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E7=8E=87=E6=95=B0=E6=8D=AE=E4=B8=8D=E4=B8=80=E8=87=B4=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E6=8E=92=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/dataSources.xml | 12 +++ .idea/sqldialects.xml | 3 + ...dwd_engine_equipment_inspection_task_d.sql | 5 +- finereport/kanban/pc/工程.sql | 64 +++++++++++++- finereport/kanban/pc/总裁.sql | 38 ++++++++- .../多经四大业务指标完成情况填报表.sql | 85 +++++++++++++++++++ 映射表规范.md | 6 ++ 7 files changed, 208 insertions(+), 5 deletions(-) create mode 100644 finereport/tianbao/6_innovation/多经四大业务指标完成情况填报表.sql diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml index 7c36f1f..02e1a61 100644 --- a/.idea/dataSources.xml +++ b/.idea/dataSources.xml @@ -28,5 +28,17 @@ $ProjectFileDir$ + + sqlserver.ms + true + com.microsoft.sqlserver.jdbc.SQLServerDriver + jdbc:sqlserver://172.18.96.4:1433 + + + + + + $ProjectFileDir$ + \ No newline at end of file diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index c3f8137..0dfa1b4 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -5,6 +5,7 @@ + @@ -12,6 +13,8 @@ + + diff --git a/dw/dwd/dwd_engine_equipment_inspection_task_d.sql b/dw/dwd/dwd_engine_equipment_inspection_task_d.sql index b3ae6a3..f09a28f 100644 --- a/dw/dwd/dwd_engine_equipment_inspection_task_d.sql +++ b/dw/dwd/dwd_engine_equipment_inspection_task_d.sql @@ -8,4 +8,7 @@ select , TaskEndTime -- 任务结束时间 , TaskStatue -- 任务状态 from ods_erp_tb_eq_flow_task_inspection_d -where IsClose = 0 \ No newline at end of file +where IsClose = 0 +-- and CommId = '214309' +-- and TaskEndTime <= DATE_SUB(CURDATE(),INTERVAL 1 SECOND) +-- and TaskEndTime>='2024-07-01' \ No newline at end of file diff --git a/finereport/kanban/pc/工程.sql b/finereport/kanban/pc/工程.sql index 3ac5c07..a53c238 100644 --- a/finereport/kanban/pc/工程.sql +++ b/finereport/kanban/pc/工程.sql @@ -84,8 +84,8 @@ where 1=1 ${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,")} @@ -99,6 +99,65 @@ where 1=1 ${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 @@ -110,7 +169,6 @@ where ParentCostCode = '0008' -- 异常抬杆 - select organ_code , organ_name , sum(manualOutNum) manualOutNum diff --git a/finereport/kanban/pc/总裁.sql b/finereport/kanban/pc/总裁.sql index fc641c3..6283126 100644 --- a/finereport/kanban/pc/总裁.sql +++ b/finereport/kanban/pc/总裁.sql @@ -14,4 +14,40 @@ where 1=1 ${if(len(organ)=0,"","and organ_code = '"+organ+"'")} and left(ym,4) = '2024' group by ym -order by ym asc \ No newline at end of file +order by ym asc + + + +-- 【设备巡检】 + +-- 【old】 +select + sum(task_finish_num) + , sum(task_num) + , sum(task_finish_num) / sum(task_num) inspection_finish_rate +FROM dws_engine_equipment_inspect_task_m + where task_ym = date_format(current_date(),'%Y%m') + ${if(len(organ)=0,"","and organ_code = '"+organ+"'")} +; + +-- 【new】 + +select +comm_id +,comm_name +,task_ym + sum(task_finish_num) / sum(task_num) as inspection_finish_rate +FROM dws_engine_equipment_inspect_task_m +where task_ym = date_format(current_date(),'%Y%m') +group by + comm_id + ,comm_name + ,task_ym +; + + ${if(len(organ)=0,"","and organ_code = '"+organ+"'")} + + + + + 设备巡查.select(task_finish_num) / 设备巡查.select(task_num) \ No newline at end of file diff --git a/finereport/tianbao/6_innovation/多经四大业务指标完成情况填报表.sql b/finereport/tianbao/6_innovation/多经四大业务指标完成情况填报表.sql new file mode 100644 index 0000000..362cf6a --- /dev/null +++ b/finereport/tianbao/6_innovation/多经四大业务指标完成情况填报表.sql @@ -0,0 +1,85 @@ +drop table if exists dw.ods_innoveco_metrics_finish_d; +CREATE TABLE IF NOT EXISTS dw.ods_innoveco_metrics_finish_d ( + id INT AUTO_INCREMENT PRIMARY KEY COMMENT '自增id' + ,ym VARCHAR(50) COMMENT '年月' + ,organ_code VARCHAR(50) COMMENT '片区ID' + ,organ_name VARCHAR(50) COMMENT '片区名称' + ,business_type VARCHAR(50) COMMENT '业务类型' + ,revenue_type VARCHAR(50) COMMENT '收入类型' + ,revenue_value DECIMAL(16,2) COMMENT '收入值' + ,update_time datetime COMMENT '更新时间' + ,update_user VARCHAR(100) COMMENT '更新人' + +)COMMENT = '多经四大业务指标完成情况填报表' +; + + + +truncate table dw.ods_innoveco_metrics_finish_d; + +select + id -- 自增id' + ,ym -- 年月' + ,organ_code + ,organ_name -- 片区' + ,business_type -- 业务类型' + ,revenue_type -- 收入' + ,revenue_value -- 收入值' +,update_user +,update_time +from dw.ods_innoveco_metrics_finish_d +; + + +-- 【tianbao_innoveco_input】 + +select + id -- 自增id' + ,ym -- 年月' + ,organ_name -- 片区' + ,business_type -- 业务类型' + ,revenue_type -- 收入' + ,revenue_value -- 收入值' +from dw.ods_innoveco_metrics_finish_d +where ym = '${p_ym}' +; + + + +-- 【erp_片区】 +SELECT + organ_code +,organ_name +FROM +( + SELECT DISTINCT + organ_code AS organ_code + ,organ_name AS organ_name + , CASE + WHEN organ_code = '0102' THEN 1 -- 成都片区 + WHEN organ_code = '0101' THEN 2 -- 乐山片区 + WHEN organ_code = '0115' THEN 3 -- 眉山片区 + WHEN organ_code = '0120' THEN 4 -- 攀西片区 + WHEN organ_code = '0106' THEN 5 -- 长春片区 + WHEN organ_code = '0109' THEN 6 -- 大湾片区 + WHEN organ_code = '0108' THEN 7 -- 商写片区 + WHEN organ_code = '0116' THEN 8 -- 川东北片区 + WHEN organ_code = '0103' THEN 9 -- 库尔勒片区 + WHEN organ_code = '0117' THEN 10 -- 乌鲁木齐片区 + WHEN organ_code = '0118' THEN 11 -- 喀什片区 + WHEN organ_code = '0114' THEN 13 -- 雅华片区 + else 999 + END AS RK +FROM dim_organ_mapping +where organ_code is not null +and organ_code <> '0121' +UNION +SELECT + DISTINCT + cx_oragan_code AS organ_code + , cx_oragan_name AS organ_name + , 14 AS RK +FROM dim_organ_mapping +where cx_oragan_code = '6001' + )T +ORDER BY T.RK; diff --git a/映射表规范.md b/映射表规范.md index 9e6eb95..707ffef 100644 --- a/映射表规范.md +++ b/映射表规范.md @@ -25,3 +25,9 @@ | 214351002 | 【成都】港基·叠香庄园 | | 214350002 | 【成都】翰香府 | + +【创新四大业务指标完成情况 新增片区如下】 2024-07-24 + +| 片区id | 片区 | +|------|----------| +| 6001 | 资阳佳美| From d86e0db1633f6fbf55caea6387b5cd5f06f27e56 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Thu, 25 Jul 2024 22:06:28 +0800 Subject: [PATCH 42/89] =?UTF-8?q?=E5=9B=9B=E5=A4=A7=E4=B8=9A=E5=8A=A1?= =?UTF-8?q?=E6=8C=87=E6=A0=87=E5=AE=8C=E6=88=90=E6=83=85=E5=86=B5=E5=A1=AB?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E4=BC=98=E5=8C=96+=E5=87=BA=E7=A7=9F?= =?UTF-8?q?=E7=8E=87=E6=95=B0=E6=8D=AE=E5=BC=82=E5=B8=B8=E6=8E=92=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/dataSources.xml | 12 ++++ .idea/sqldialects.xml | 5 ++ finereport/kanban/mobile/工程_mobile.sql | 0 finereport/kanban/mobile/法务_mobile.sql | 0 finereport/kanban/mobile/物业_mobile.sql | 0 finereport/kanban/mobile/财务_mobile.sql | 0 finereport/kanban/mobile/运营_mobile.sql | 0 finereport/kanban/pc/人力.sql | 0 finereport/kanban/pc/创新生态.sql | 72 +++++++++++++++++++ finereport/kanban/pc/商业.sql | 71 ++++++++++++++++++ finereport/kanban/pc/法务.sql | 0 finereport/kanban/pc/财务.sql | 0 finereport/kanban/pc/运营.sql | 0 .../多经四大业务指标完成情况填报表.sql | 28 ++++---- .../xiazuan/2_operation/1_计划运营情况.sql | 0 .../xiazuan/2_operation/4_接房入住情况.sql | 0 .../xiazuan/3_property/2_报事情况报表.sql | 0 .../xiazuan/3_property/3_飞检得分明细.sql | 0 .../6_innovation/1_新零售订单明细_片区.sql | 0 .../6_innovation/2_新零售订单明细_品类.sql | 0 .../6_innovation/3_新零售销售预警明细.sql | 0 .../6_innovation/4_小悦到家服务销售明细.sql | 0 .../6_innovation/5_多经合同到期情况.sql | 0 .../xiazuan/7_business/1_出租率明细报表.sql | 31 ++++++++ .../xiazuan/8_legal/1_法务应收款智能报表.sql | 0 .../xiazuan/8_legal/2_移交数据明细报表.sql | 0 映射表规范.md | 7 +- 27 files changed, 210 insertions(+), 16 deletions(-) create mode 100644 finereport/kanban/mobile/工程_mobile.sql create mode 100644 finereport/kanban/mobile/法务_mobile.sql create mode 100644 finereport/kanban/mobile/物业_mobile.sql create mode 100644 finereport/kanban/mobile/财务_mobile.sql create mode 100644 finereport/kanban/mobile/运营_mobile.sql create mode 100644 finereport/kanban/pc/人力.sql create mode 100644 finereport/kanban/pc/创新生态.sql create mode 100644 finereport/kanban/pc/商业.sql create mode 100644 finereport/kanban/pc/法务.sql create mode 100644 finereport/kanban/pc/财务.sql create mode 100644 finereport/kanban/pc/运营.sql create mode 100644 finereport/xiazuan/2_operation/1_计划运营情况.sql create mode 100644 finereport/xiazuan/2_operation/4_接房入住情况.sql create mode 100644 finereport/xiazuan/3_property/2_报事情况报表.sql create mode 100644 finereport/xiazuan/3_property/3_飞检得分明细.sql create mode 100644 finereport/xiazuan/6_innovation/1_新零售订单明细_片区.sql create mode 100644 finereport/xiazuan/6_innovation/2_新零售订单明细_品类.sql create mode 100644 finereport/xiazuan/6_innovation/3_新零售销售预警明细.sql create mode 100644 finereport/xiazuan/6_innovation/4_小悦到家服务销售明细.sql create mode 100644 finereport/xiazuan/6_innovation/5_多经合同到期情况.sql create mode 100644 finereport/xiazuan/7_business/1_出租率明细报表.sql create mode 100644 finereport/xiazuan/8_legal/1_法务应收款智能报表.sql create mode 100644 finereport/xiazuan/8_legal/2_移交数据明细报表.sql diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml index 02e1a61..3a8ea2e 100644 --- a/.idea/dataSources.xml +++ b/.idea/dataSources.xml @@ -40,5 +40,17 @@ $ProjectFileDir$ + + mysql.8 + true + com.mysql.cj.jdbc.Driver + jdbc:mysql://172.18.1.100:3306 + + + + + + $ProjectFileDir$ + \ No newline at end of file diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 0dfa1b4..42cee4a 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -3,15 +3,20 @@ + + + + + diff --git a/finereport/kanban/mobile/工程_mobile.sql b/finereport/kanban/mobile/工程_mobile.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/kanban/mobile/法务_mobile.sql b/finereport/kanban/mobile/法务_mobile.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/kanban/mobile/物业_mobile.sql b/finereport/kanban/mobile/物业_mobile.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/kanban/mobile/财务_mobile.sql b/finereport/kanban/mobile/财务_mobile.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/kanban/mobile/运营_mobile.sql b/finereport/kanban/mobile/运营_mobile.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/kanban/pc/人力.sql b/finereport/kanban/pc/人力.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/kanban/pc/创新生态.sql b/finereport/kanban/pc/创新生态.sql new file mode 100644 index 0000000..2c20f53 --- /dev/null +++ b/finereport/kanban/pc/创新生态.sql @@ -0,0 +1,72 @@ +-- 【report_指标卡_填报】 + +SELECT +-- 收入汇总费用 + SUM(CASE WHEN business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) as revenue_value -- 四大业务收入 +,SUM(CASE WHEN revenue_type = '附属' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) AS revenue_value_1 -- 空间运营收入 +,SUM(CASE WHEN revenue_type = '拎包' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) AS revenue_value_2 -- 美居收入 +,SUM(CASE WHEN revenue_type = '创新' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) AS revenue_value_3 -- 新零售收入 +,SUM(CASE WHEN revenue_type = '资产' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) AS revenue_value_4 -- 资产出租收入 + +-- 收入完成率 +,CASE WHEN SUM(CASE WHEN business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) = 0 THEN 0 + ELSE SUM(CASE WHEN business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) + / SUM(CASE WHEN business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) + END AS finish_rate -- 四大业务收入完成率 + +,CASE WHEN SUM(CASE WHEN revenue_type = '附属' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) = 0 THEN 0 + ELSE SUM(CASE WHEN revenue_type = '附属' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) +/ SUM(CASE WHEN revenue_type = '附属' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) + END AS finish_rate_1 -- 空间运营收入完成率 + +,CASE WHEN SUM(CASE WHEN revenue_type = '拎包' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) = 0 THEN 0 + ELSE SUM(CASE WHEN revenue_type = '拎包' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) +/ SUM(CASE WHEN revenue_type = '拎包' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) + END AS finish_rate_2 -- 美居收入完成率 + +,CASE WHEN SUM(CASE WHEN revenue_type = '创新' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) = 0 THEN 0 + ELSE SUM(CASE WHEN revenue_type = '创新' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) +/ SUM(CASE WHEN revenue_type = '创新' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) + END AS finish_rate_3 -- 新零售收入完成率 + +,CASE WHEN SUM(CASE WHEN revenue_type = '资产' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) = 0 THEN 0 + ELSE SUM(CASE WHEN revenue_type = '资产' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) +/ SUM(CASE WHEN revenue_type = '资产' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) + END AS finish_rate_4 -- 资产出租收入完成率 + +FROM dw.ods_innoveco_metrics_finish_d +WHERE business_type in('收入','目标') -- 业务类型 +AND YM = '${p_ym}' +${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +; + + +-- report_指标卡 + + + WITH T1 AS (/*各类别应收与实收*/ +SELECT + index_type, + SUM(IFNULL(index_receivable,0)) AS 应收金额, + SUM(IFNULL(index_receipts,0)) AS 实收金额 +FROM ods_caiwu_profit +WHERE 1=1 +-- AND `year_month` = '${REPLACE(p_ym,"-","")}' + -- ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + -- ${IF(LEN(p_prgject)>0," AND comm_id IN ('"+JOINARRAY(p_prgject,"','")+"')", "")} + GROUP BY index_type + ) +SELECT + SUM(CASE WHEN index_type = '附属资源/空间运营' THEN 实收金额 ELSE 0 END) AS 空间运营实收, + SUM(CASE WHEN index_type = '附属资源/空间运营' THEN 实收金额 / 应收金额 ELSE 0 END) AS 空间运营完成率, + SUM(CASE WHEN index_type = '美居' THEN 实收金额 ELSE 0 END) AS 美居实收, + SUM(CASE WHEN index_type = '美居' THEN 实收金额 / 应收金额 ELSE 0 END) AS 美居完成率, + SUM(CASE WHEN index_type = '社商/新零售' THEN 实收金额 ELSE 0 END) AS 新零售实收, + SUM(CASE WHEN index_type = '社商/新零售' THEN 实收金额 / 应收金额 ELSE 0 END) AS 新零售完成率, + SUM(CASE WHEN index_type = '资产运营/资产租售' THEN 实收金额 ELSE 0 END) AS 资产出租实收, + SUM(CASE WHEN index_type = '资产运营/资产租售' THEN 实收金额 / 应收金额 ELSE 0 END) AS 资产出租完成率, + SUM(实收金额) AS 全部实收, + IFNULL(SUM(实收金额) / SUM(应收金额),0) AS 完成率 +FROM T1 +; + diff --git a/finereport/kanban/pc/商业.sql b/finereport/kanban/pc/商业.sql new file mode 100644 index 0000000..7107868 --- /dev/null +++ b/finereport/kanban/pc/商业.sql @@ -0,0 +1,71 @@ +-- 【出租率】 + + +SELECT + `type` + , sum(lease_area)/sum(construction_area) rent_rate +FROM dws_business_rent_rate_d + ${if(len(project) == 0,"","where project_id in (" + project + ")")} +group by `type` + + + +-- 【出租面积】 + +SELECT + project_id + , project_name + , `type` + , construction_area/10000 construction_area -- 建筑面积 + , lease_area/10000 lease_area + , lease_area/construction_area rent_rate + +SELECT +sum(lease_area ) as lease_area -- 出租面积 +,sum(construction_area) as construction_area -- 建筑面积 +, sum(lease_area ) / sum(construction_area) as rate +FROM dw.dws_business_rent_rate_d +where lease_end_date >= '2024-07-25' -- 合同结束时间 + and lease_start_date <= '2024-07-25' + +; + + + + +${if(len(project) == 0,"","where project_id in (" + project + ")")} + +; +-- 出租率计算: sum(出租面积.select(lease_area))/sum(出租面积.select(construction_area)) -- 正确值: 33.45% + + + +-- 【收款金额】 +SELECT + sum(received_money) 实收金额 +,sum(current_sure_money) 收款金额 +,sum(received_money) / sum(current_sure_money) rate + +,sum(areare_money) as areare_money +,sum(current_sure_money) as current_sure_money + +,sum(areare_money) / sum(current_sure_money) as rate1 +FROM +( +SELECT + project_id + , project_name + , accrual_month + , current_sure_money/10000 current_sure_money -- 收款金额 收款金额 + , received_money/10000 received_money -- 实收金额 + , areare_money/10000 areare_money -- 欠收金额 +FROM dws_business_bill_m +where left(accrual_month,7) = '2024-06' + -- ${if(len(project) == 0,"","and project_id in (" + project + ")")} + )T + +-- 收缴率 64.8 截至 24 + + -- sum(收款金额.select(received_money))/sum(收款金额.select(current_sure_money)) + +-- 欠缴 / 应缴 \ No newline at end of file diff --git a/finereport/kanban/pc/法务.sql b/finereport/kanban/pc/法务.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/kanban/pc/财务.sql b/finereport/kanban/pc/财务.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/kanban/pc/运营.sql b/finereport/kanban/pc/运营.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/tianbao/6_innovation/多经四大业务指标完成情况填报表.sql b/finereport/tianbao/6_innovation/多经四大业务指标完成情况填报表.sql index 362cf6a..f1b6b3f 100644 --- a/finereport/tianbao/6_innovation/多经四大业务指标完成情况填报表.sql +++ b/finereport/tianbao/6_innovation/多经四大业务指标完成情况填报表.sql @@ -56,17 +56,17 @@ FROM organ_code AS organ_code ,organ_name AS organ_name , CASE - WHEN organ_code = '0102' THEN 1 -- 成都片区 - WHEN organ_code = '0101' THEN 2 -- 乐山片区 - WHEN organ_code = '0115' THEN 3 -- 眉山片区 - WHEN organ_code = '0120' THEN 4 -- 攀西片区 - WHEN organ_code = '0106' THEN 5 -- 长春片区 - WHEN organ_code = '0109' THEN 6 -- 大湾片区 - WHEN organ_code = '0108' THEN 7 -- 商写片区 - WHEN organ_code = '0116' THEN 8 -- 川东北片区 - WHEN organ_code = '0103' THEN 9 -- 库尔勒片区 - WHEN organ_code = '0117' THEN 10 -- 乌鲁木齐片区 - WHEN organ_code = '0118' THEN 11 -- 喀什片区 + WHEN organ_code = '0102' THEN 2 -- 成都片区 + WHEN organ_code = '0101' THEN 3 -- 乐山片区 + WHEN organ_code = '0115' THEN 4 -- 眉山片区 + WHEN organ_code = '0120' THEN 5 -- 攀西片区 + WHEN organ_code = '0106' THEN 6 -- 长春片区 + WHEN organ_code = '0109' THEN 7 -- 大湾片区 + WHEN organ_code = '0108' THEN 8 -- 商写片区 + WHEN organ_code = '0116' THEN 9 -- 川东北片区 + WHEN organ_code = '0103' THEN 10 -- 库尔勒片区 + WHEN organ_code = '0117' THEN 11 -- 乌鲁木齐片区 + WHEN organ_code = '0118' THEN 12 -- 喀什片区 WHEN organ_code = '0114' THEN 13 -- 雅华片区 else 999 END AS RK @@ -78,8 +78,10 @@ SELECT DISTINCT cx_oragan_code AS organ_code , cx_oragan_name AS organ_name - , 14 AS RK + ,CASE WHEN cx_oragan_code = '6002' THEN 1 + WHEN cx_oragan_code = '6001' THEN 14 + END AS RK FROM dim_organ_mapping -where cx_oragan_code = '6001' +where cx_oragan_code in('6001','6002') )T ORDER BY T.RK; diff --git a/finereport/xiazuan/2_operation/1_计划运营情况.sql b/finereport/xiazuan/2_operation/1_计划运营情况.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/xiazuan/2_operation/4_接房入住情况.sql b/finereport/xiazuan/2_operation/4_接房入住情况.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/xiazuan/3_property/2_报事情况报表.sql b/finereport/xiazuan/3_property/2_报事情况报表.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/xiazuan/3_property/3_飞检得分明细.sql b/finereport/xiazuan/3_property/3_飞检得分明细.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/xiazuan/6_innovation/1_新零售订单明细_片区.sql b/finereport/xiazuan/6_innovation/1_新零售订单明细_片区.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/xiazuan/6_innovation/2_新零售订单明细_品类.sql b/finereport/xiazuan/6_innovation/2_新零售订单明细_品类.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/xiazuan/6_innovation/3_新零售销售预警明细.sql b/finereport/xiazuan/6_innovation/3_新零售销售预警明细.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/xiazuan/6_innovation/4_小悦到家服务销售明细.sql b/finereport/xiazuan/6_innovation/4_小悦到家服务销售明细.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/xiazuan/6_innovation/5_多经合同到期情况.sql b/finereport/xiazuan/6_innovation/5_多经合同到期情况.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/xiazuan/7_business/1_出租率明细报表.sql b/finereport/xiazuan/7_business/1_出租率明细报表.sql new file mode 100644 index 0000000..b9ab7e9 --- /dev/null +++ b/finereport/xiazuan/7_business/1_出租率明细报表.sql @@ -0,0 +1,31 @@ +-- 【dic_项目】 + +SELECT DISTINCT + project_id AS 项目id, + project_name AS 项目名称 +FROM dws_business_rent_rate_d +WHERE 1=1 + ${IF(LEN(p_type)>0,"AND type IN ('"+JOINARRAY(p_type,"','")+"')","")} + + +-- 【dic_业态】 + +SELECT DISTINCT + type AS 业态 +FROM dws_business_rent_rate_d + + +-- 【report_1_指标卡】 + +SELECT + project_name AS 项目, + COUNT(project_id) AS 资产数量, + SUM(IFNULL(construction_area,0)) AS 资产面积, + SUM(IFNULL(lease_area,0)) AS 已出租面积 +FROM dws_business_rent_rate_d T1 +WHERE 1=1 + ${IF(LEN(p_startdate)>0,"AND T1.lease_start_date <= '"+FORMAT(p_startdate,"yyyy-MM-dd 00:00:00")+"'","")} + ${IF(LEN(p_enddate)>0,"AND T1.lease_end_date >= '"+FORMAT(p_enddate,"yyyy-MM-dd 00:00:00")+"'","")} + ${IF(LEN(p_type)>0," AND T1.type IN ('"+JOINARRAY(p_type,"','")+"')", "")} + ${IF(LEN(p_project)>0," AND T1.project_id IN ('"+JOINARRAY(p_project,"','")+"')", "")} +GROUP BY project_name \ No newline at end of file diff --git a/finereport/xiazuan/8_legal/1_法务应收款智能报表.sql b/finereport/xiazuan/8_legal/1_法务应收款智能报表.sql new file mode 100644 index 0000000..e69de29 diff --git a/finereport/xiazuan/8_legal/2_移交数据明细报表.sql b/finereport/xiazuan/8_legal/2_移交数据明细报表.sql new file mode 100644 index 0000000..e69de29 diff --git a/映射表规范.md b/映射表规范.md index 707ffef..bf7fe09 100644 --- a/映射表规范.md +++ b/映射表规范.md @@ -28,6 +28,7 @@ 【创新四大业务指标完成情况 新增片区如下】 2024-07-24 -| 片区id | 片区 | -|------|----------| -| 6001 | 资阳佳美| +| 片区id | 片区 | +|------|------| +| 6001 | 资阳佳美 | +| 6002 | 总部职能 | From 00ae197accd364a64b2630ed97139e8c5749a599 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Mon, 29 Jul 2024 17:57:25 +0800 Subject: [PATCH 43/89] =?UTF-8?q?=E5=B7=A5=E7=A8=8B=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E5=9F=BA=E7=A1=80=E6=8C=87=E6=A0=87=E6=A0=B8=E5=AF=B9=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D+=E6=80=BB=E8=A3=81=E7=9C=8B=E6=9D=BF=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 3 + finereport/kanban/pc/商业.sql | 24 +++-- finereport/kanban/pc/工程.sql | 153 +++++++++++++++++++++++++- finereport/kanban/pc/总裁.sql | 197 +++++++++++++++++++++++++++++++++- 4 files changed, 360 insertions(+), 17 deletions(-) diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 42cee4a..24dba3b 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -2,13 +2,16 @@ + + + diff --git a/finereport/kanban/pc/商业.sql b/finereport/kanban/pc/商业.sql index 7107868..702eaaf 100644 --- a/finereport/kanban/pc/商业.sql +++ b/finereport/kanban/pc/商业.sql @@ -1,5 +1,6 @@ +-- --------------------- -- 【出租率】 - +-- --------------------- SELECT `type` @@ -7,19 +8,19 @@ SELECT FROM dws_business_rent_rate_d ${if(len(project) == 0,"","where project_id in (" + project + ")")} group by `type` - +; -- 【出租面积】 -SELECT +/*SELECT project_id , project_name , `type` , construction_area/10000 construction_area -- 建筑面积 , lease_area/10000 lease_area , lease_area/construction_area rent_rate - +*/ SELECT sum(lease_area ) as lease_area -- 出租面积 ,sum(construction_area) as construction_area -- 建筑面积 @@ -31,25 +32,26 @@ where lease_end_date >= '2024-07-25' -- 合同结束时间 ; - - -${if(len(project) == 0,"","where project_id in (" + project + ")")} +-- ${if(len(project) == 0,"","where project_id in (" + project + ")")} ; -- 出租率计算: sum(出租面积.select(lease_area))/sum(出租面积.select(construction_area)) -- 正确值: 33.45% +-- 业务反馈 建筑面积 :335335.36 +-- 租赁面积: 298452.2 +-- 出租率: 0.890011122000376 +-- ============================================================================================================ + +-- ------------------------------ -- 【收款金额】 +-- ------------------------------- SELECT sum(received_money) 实收金额 ,sum(current_sure_money) 收款金额 ,sum(received_money) / sum(current_sure_money) rate -,sum(areare_money) as areare_money -,sum(current_sure_money) as current_sure_money - -,sum(areare_money) / sum(current_sure_money) as rate1 FROM ( SELECT diff --git a/finereport/kanban/pc/工程.sql b/finereport/kanban/pc/工程.sql index a53c238..a062b25 100644 --- a/finereport/kanban/pc/工程.sql +++ b/finereport/kanban/pc/工程.sql @@ -5,7 +5,7 @@ SELECT DISTINCT organ_code AS 片区id, organ_name AS 片区名称 FROM dim_organ_mapping - +; -- report_车场启费 @@ -27,6 +27,23 @@ from ( 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_设备完好率 @@ -45,7 +62,7 @@ union all select '巡查点位数', count(*) from dim_engine_point_d union all select '设施设备总数', count(*) from dim_engine_equipment_d - +; -- 能耗环比 select * @@ -54,7 +71,7 @@ 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 @@ -64,7 +81,7 @@ where MeterType = '电表' ${IF(LEN(p_ym)>0," AND list_ym ='" + left(p_ym,4) + right(p_ym,2) + "'","")} order by Dosage desc limit 5 - +; -- 能耗同比 SELECT @@ -176,4 +193,130 @@ select , 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 \ No newline at end of file +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 +; \ No newline at end of file diff --git a/finereport/kanban/pc/总裁.sql b/finereport/kanban/pc/总裁.sql index 6283126..70c79d5 100644 --- a/finereport/kanban/pc/总裁.sql +++ b/finereport/kanban/pc/总裁.sql @@ -50,4 +50,199 @@ group by - 设备巡查.select(task_finish_num) / 设备巡查.select(task_num) \ No newline at end of file + 设备巡查.select(task_finish_num) / 设备巡查.select(task_num) + + +-- ---------------------------------- +-- report_商业出租率 +-- --------------------------------- +select sum(lease_area)/sum(construction_area) rent_rate +FROM dws_business_rent_rate_d a + left join (select distinct id, erp_id from ods_bs_project_d) b + on a.project_id = b.id + left join (select distinct organ_code, organ_name, comm_id, comm_name from dim_organ_mapping where comm_id is not null) c + on b.erp_id = c.comm_id +where 1=1 + ${if(len(organ)=0,"","and c.organ_code = '"+organ+"'")} + + +-- ---------------------------------- +-- report_商业出租率_new +-- --------------------------------- + +SELECT + T.`type` + ,SUM(T.rentRoomAreaSum) / (SUM(T.rentRoomAreaSum) + SUM(T.notRentRoomAreaSum)) as rent_rate -- 出租率 +FROM + ( + SELECT + B.`type` + ,SUM(CASE WHEN A.business_status = 1 THEN A.construction_area ELSE 0 END ) AS rentRoomAreaSum -- 出租面积 + ,SUM(CASE WHEN A.business_status != 4 AND A.business_status != 1 THEN A.construction_area ELSE 0 END ) AS notRentRoomAreaSum -- 未出租面积 + FROM + ( + SELECT + id + ,erp_id + ,building_id + ,business_status + ,construction_area -- 建筑面积 + FROM dw.ods_bs_room_d -- 商管房间表 + WHERE del_flag = 0 + AND enable_flag = 0 + AND review_status = 2 + )A + LEFT JOIN + ( + select + id + ,project_id + ,project_name + ,`type` -- 业态 商业街,集中商业,写字楼,底商 + from dim_business_building_d + )B + on A.building_id = B.id + LEFT JOIN + ( + select + distinct + organ_code + ,organ_name + ,comm_id + ,comm_name + from dim_organ_mapping + where comm_id is not null + )C + on A.erp_id = C.comm_id + where 1=1 + ${if(len(organ)=0,"","and b.organ_code = '"+ organ+"'")} + GROUP BY + B.`type` + )T +GROUP BY + T.`type` +; + + + + +-- ---------------------------------- +-- report_商业收缴率 +-- --------------------------------- + +select sum(received_money) / sum(current_sure_money) collection_rate +FROM dws_business_bill_m a + left join (select distinct id, erp_id from ods_bs_project_d) b + on a.project_id = b.id + left join (select distinct organ_code, organ_name, comm_id, comm_name from dim_organ_mapping where comm_id is not null) c + on b.erp_id = c.comm_id +where left(accrual_month,7) = '2024-06' + ${if(len(organ)=0,"","and c.organ_code = '"+organ+"'")} + +; + + +-- ---------------------------------- +-- report_商业收缴率_new +-- --------------------------------- + +SELECT + SUM(T.received_money) / SUM(T.current_sure_money) AS collection_rate -- 收缴率 +FROM + ( + SELECT + T1.received_money AS received_money + ,T1.current_sure_money AS current_sure_money + + FROM + ( + SELECT + a.project_id -- 项目id 关联bs_project表 + ,SUM(a.received_money) AS received_money -- 实收金额 + ,SUM(a.current_sure_money) AS current_sure_money -- 实际应收金额=应收金额-合同减免金额 + -- ,SUM(a.under_money) AS under_money -- 欠收金额 + FROM + ( + SELECT + contract_id + ,accrual_month + ,start_period + ,bill_type + ,received_money -- 实收金额 + ,current_sure_money -- 实际应收金额=应收金额-合同减免金额 + ,current_sure_money - received_money as under_money -- 欠收金额 + ,project_id + FROM dw.ods_bs_fi_bills_d + WHERE save_status = 1 -- 账单状态 0是保存 1是审核过的 + -- ${if(len(project) == 0,"","AND project_id in (" + project + ")")} + )a + left join + ( + SELECT + status + ,stop_date + ,id + FROM dw.ods_bs_contract_d + WHERE del_flag = 0 + )bc + on bc.id = a.contract_id + WHERE ((bc.status != 2 and bc.stop_date is null) OR + (bc.stop_date is not null + and ((a.accrual_month <= DATE_FORMAT(bc.stop_date, '%Y-%m') + and a.start_period <= bc.stop_date) + + or a.bill_type = 15) + )) + group by + a.project_id + UNION ALL + SELECT + a.project_id + ,SUM(b.received_amount) AS received_money + ,SUM(b.received_money) AS current_sure_money + -- ,SUM(b.under_money) AS under_money + FROM + ( + SELECT + receive_no -- 催缴单号 + ,project_id + FROM dw.ods_bs_fi_receive_other_d + where recheck_status = 2 + )a + LEFT JOIN + ( + SELECT + receive_no + ,received_amount + ,received_money + ,received_money - received_amount AS under_money + FROM dw.ods_bs_fi_receive_other_item_d + )b + ON a.receive_no = b.receive_no + group by + project_id + )T1 + left join + ( + select + distinct id + ,erp_id + from dw.ods_bs_project_d + ) b + on T1.project_id = b.id + left join + ( + select + distinct + organ_code + ,organ_name + ,comm_id + ,comm_name + from dim_organ_mapping + where comm_id is not null + ) c + on b.erp_id = c.comm_id + ${if(len(organ)=0,"","and c.organ_code = '"+organ+"'")} + )T + +; \ No newline at end of file From 3216fa52fea8e18af44126efe3882cd383de5b2a Mon Sep 17 00:00:00 2001 From: yangkunan Date: Mon, 29 Jul 2024 18:50:08 +0800 Subject: [PATCH 44/89] =?UTF-8?q?=E6=8A=A5=E4=BA=8B=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E7=8E=87=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 2 ++ dw/dws/dws_estate_incident_info_m.sql | 3 ++- .../xiazuan/3_property/2_报事情况报表.sql | 20 +++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 24dba3b..aa81cb8 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -15,6 +15,7 @@ + @@ -26,6 +27,7 @@ + \ No newline at end of file diff --git a/dw/dws/dws_estate_incident_info_m.sql b/dw/dws/dws_estate_incident_info_m.sql index c9861b1..f46662f 100644 --- a/dw/dws/dws_estate_incident_info_m.sql +++ b/dw/dws/dws_estate_incident_info_m.sql @@ -5,7 +5,7 @@ select , b.comm_name , date_format(a.IncidentDate,'%Y%m') incident_ym , count(*) incident_num - , sum(case when ifnull(a.CloseTime,0)=0 then 1 else 0 end) incident_close_num + , sum(case when ifnull(a.CloseTime,0)=0 then 0 else 1 end) incident_close_num , sum(case when a.IsClose=0 and CloseTime is null and a.MainEndDate is null then 1 else 0 end) processing_incident_num , sum(case when a.CloseTime is null and MainEndDate is not null then 1 else 0 end) completed_not_close_incident_num , sum(case when timestampdiff(hour,a.ForwardDateTime, a.IncidentDate)>2 then 1 else 0 end) response_timeout_incident_num @@ -17,6 +17,7 @@ select , sum(case when a.DelayHours is not null then 1 else 0 end) delay_incident_num , sum(case when a.IsTouSu = 1 then 1 else 0 end) tousu_incident_num , sum(case when a.IsClose=1 and a.IsTouSu = 1 then 1 else 0 end) tousu_close_incident_num + , sum(case when ifnull(MainEndDate,'') = '' and IFNULL(CloseTime,'') = '' AND IsClose = 0 then 1 else 0 end) indeal_incident_num from dwd_estate_incident_info_d a inner join (select distinct organ_code, organ_name, comm_id, comm_name from dim_organ_mapping) b on a.CommID = b.comm_id diff --git a/finereport/xiazuan/3_property/2_报事情况报表.sql b/finereport/xiazuan/3_property/2_报事情况报表.sql index e69de29..1d6ee26 100644 --- a/finereport/xiazuan/3_property/2_报事情况报表.sql +++ b/finereport/xiazuan/3_property/2_报事情况报表.sql @@ -0,0 +1,20 @@ +-- ====================================== +-- report_5_完成率 +-- ====================================== + +SELECT + organ_code AS 片区id, + organ_name AS 片区名称, + SUM(IFNULL(incident_num,0)) AS 报事总数, + IFNULL((SUM(IFNULL(response_timely_incident_num,0)) / SUM(IFNULL(incident_num,0))),0) AS 及时响应率, + IFNULL((SUM(IFNULL(completed_incident_num,0)) / SUM(IFNULL(incident_num,0))),0) AS 完成率, + IFNULL((SUM(IFNULL(follow_up_incident_num,0)) / SUM(IFNULL(incident_num,0))),0) AS 回访率, + IFNULL((SUM(IFNULL(incident_close_num,0)) / SUM(IFNULL(incident_num,0))),0) AS 闭单率, + case when (sum(incident_num) - sum(indeal_incident_num)) = 0 THEN 0 + else sum(incident_close_num) / (sum(incident_num) - sum(indeal_incident_num)) + end AS 有效闭单率 +FROM dw.dws_estate_incident_info_m T1 +WHERE 1=1 + ${IF(LEN(p_startdate)>0,"AND T1.incident_ym = '"+FORMAT(CONCATENATE(p_startdate,"-01"),"yyyyMM")+"'","")} + ${IF(LEN(p_area)>0," AND T1.organ_code IN ('"+p_area+"')", "")} +GROUP BY organ_code,organ_name \ No newline at end of file From 30c1766af4c51bb8ad156746bae88d3e6d110ea1 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Mon, 5 Aug 2024 17:38:48 +0800 Subject: [PATCH 45/89] =?UTF-8?q?=E5=B7=A5=E7=A8=8B=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8+=E7=89=A9=E4=B8=9A=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E6=8A=A5=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 From 20d271a1678c7bee469dd86699727ac65d20bcf1 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 6 Aug 2024 17:45:41 +0800 Subject: [PATCH 46/89] =?UTF-8?q?=E5=88=9B=E6=96=B0=E7=94=9F=E6=80=81?= =?UTF-8?q?=E7=A7=BB=E5=8A=A8=E7=AB=AF=E7=9C=8B=E6=9D=BF=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=AF=B9=E9=BD=90+=E5=BE=A1=E5=92=8C=E6=B3=B0=E9=94=80?= =?UTF-8?q?=E5=94=AE=E9=A2=84=E8=AD=A6=E6=98=8E=E7=BB=86=E3=80=81=E6=96=B0?= =?UTF-8?q?=E9=9B=B6=E5=94=AE=E8=AE=A2=E5=8D=95=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 | 2 + finereport/kanban/mobile/创新生态_mobile.sql | 267 +++++++++++++++++- .../6_innovation/御和泰销售预警明细.sql | 63 +++++ .../xiazuan/6_innovation/新零售订单明细.sql | 65 +++++ 4 files changed, 396 insertions(+), 1 deletion(-) create mode 100644 finereport/xiazuan/6_innovation/御和泰销售预警明细.sql create mode 100644 finereport/xiazuan/6_innovation/新零售订单明细.sql diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index f5426ad..ca23ea7 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -12,6 +12,7 @@ + @@ -32,6 +33,7 @@ + \ No newline at end of file diff --git a/finereport/kanban/mobile/创新生态_mobile.sql b/finereport/kanban/mobile/创新生态_mobile.sql index 27c1191..6c5c79e 100644 --- a/finereport/kanban/mobile/创新生态_mobile.sql +++ b/finereport/kanban/mobile/创新生态_mobile.sql @@ -188,4 +188,269 @@ FROM T1 SELECT CONCAT(assessment_occupany_rate,'%') AS 完成率 FROM dws_point_occupancy_rate_summary_all -WHERE ym = '${REPLACE(p_ym,"-","")}' \ No newline at end of file +WHERE ym = '${REPLACE(p_ym,"-","")}' + + + + +-- ====================================== +-- report_1_空间运营_new +-- ====================================== + +SELECT + organ_name + ,assessment_occupany_rate AS 出租率 + ,total_occupany_rate + ,ROW_NUMBER() OVER (ORDER BY assessment_occupany_rate ${IF(p_kj = "低于50%","ASC","DESC")}) AS 序号 + +FROM + ( + SELECT + + ${IF(LEN(p_area)>0,"comm_name", "organ_name")} AS organ_name + ,assessment_occupany_rate AS assessment_occupany_rate + ,total_occupany_rate as total_occupany_rate + FROM dw.dws_point_occupancy_rate_summary_project + WHERE 1=1 + AND assessment_occupany_rate IS NOT NULL + AND ym = DATE_FORMAT(CURDATE(),'%Y%m') + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + )T +ORDER BY assessment_occupany_rate ${IF(p_kj = "低于50%","ASC","DESC")} +LIMIT 5 + + + +-- ====================================== +-- 新零售 +-- ====================================== + +SELECT + T1.organ_comm_name AS organ_name + ,T1.FINISH_RATE AS 销售完成率 + ,T1.sale_target / 10000 AS sale_target + ,T1.sale_amt / 10000 AS sale_amt + ,ROW_NUMBER() OVER (ORDER BY T1.FINISH_RATE ${IF(p_xls = "低于50%","ASC","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,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + GROUP BY + ${IF(LEN(p_area)>0,"B.comm_name", "B.organ_name")} + )T1 +ORDER BY T1.FINISH_RATE ${IF(p_xls = "低于50%","ASC","DESC")} +LIMIT 5 + + +-- ====================================== +-- 小悦到家 +-- ====================================== +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 ${IF(p_xydj = "低于50%","ASC","DESC")}) AS 序号 +FROM + ( + SELECT + ${IF(LEN(p_area)>0,"A.comm_name", "A.organ_name")} AS organ_comm_name + ,SUM(B.sale_target) AS sale_target + ,SUM(A.sale_amt) + SUM(B.sale_fact) AS sale_amt + ,CASE WHEN SUM(B.sale_target) = 0 THEN 0 + ELSE IFNULL((SUM(A.sale_amt) + SUM(B.sale_fact)) / SUM(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 xydj_amt end) sale_amt -- 202406填报数据为线下+线下,所以不取线上数据 + from dws_innoveco_new_retail_m + where create_ym = '${REPLACE(p_ym,"-","")}' + group by + organ_code + ,organ_name + ,comm_id + ,comm_name + )A + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,SUM(IFNULL(index_xiaoyuedj_target,0)) AS sale_target + ,SUM(index_xiaoyuedj_fact) AS sale_fact + FROM 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 A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + GROUP BY + ${IF(LEN(p_area)>0,"A.comm_name", "A.organ_name")} + )T1 +ORDER BY T1.FINISH_RATE ${IF(p_xydj = "低于50%","ASC","DESC")} +LIMIT 5 +; + +-- ====================================== +-- 御和泰 +-- ====================================== +SELECT + T1.organ_comm_name AS organ_name + ,T1.FINISH_RATE AS 销售完成率 + ,T1.sale_target / 10000 AS sale_target + ,T1.sale_amt / 10000 AS sale_amt + ,ROW_NUMBER() OVER (ORDER BY T1.FINISH_RATE ${IF(p_yht = "低于50%","ASC","DESC")}) AS 序号 +FROM + ( + SELECT + + ${IF(LEN(p_area)>0,"A.comm_name", "A.organ_name")} AS organ_comm_name + ,SUM(B.sale_target) AS sale_target + ,IFNULL(SUM(A.sale_amt) + SUM(B.sale_fact),0) AS sale_amt + ,CASE WHEN SUM(B.sale_target) = 0 THEN 0 + ELSE IFNULL(SUM(A.sale_amt) + SUM(B.sale_fact),0) / SUM(B.sale_target) END AS FINISH_RATE + FROM + ( + select + organ_code + ,organ_name + ,comm_id + ,comm_name + ,sum(case when create_ym = '202406' then 0 else yht_amt end) sale_amt -- 202406填报数据为线下+线下,所以不取线上数据 + from dws_innoveco_new_retail_m + where create_ym = '${REPLACE(p_ym,"-","")}' + group by + organ_code + ,organ_name + ,comm_id + ,comm_name + )A + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,SUM(IFNULL(index_yuhetai_target,0))*10000 AS sale_target + ,SUM(index_yuhetai_fact)*10000 AS sale_fact + FROM 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 A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + GROUP BY + ${IF(LEN(p_area)>0,"A.comm_name", "A.organ_name")} + )T1 +ORDER BY T1.FINISH_RATE ${IF(p_yht = "低于50%","ASC","DESC")} +LIMIT 5 + + + +WITH T1 AS ( + select + organ_code, + organ_name, + sum(yht_amt)/10000 sale_amt + from dws_innoveco_new_retail_m + where create_ym = '${REPLACE(p_ym,"-","")}' + group by organ_code,organ_name +),T2 AS ( + SELECT + organ_code,organ_name, + SUM(IFNULL(index_yuhetai_target,0)) AS sale_target, + SUM(index_xiaoyuedj_fact) AS sale_fact + FROM ods_innoveco_offlinesales + WHERE `year_month` = '${REPLACE(p_ym,"-","")}' + GROUP BY organ_code,organ_name +),T3 AS ( + SELECT + T1.organ_code, + T1.organ_name, + T2.sale_target, + (T1.sale_amt + T2.sale_fact) AS sale_amt, + IFNULL((T1.sale_amt + T2.sale_fact) / T2.sale_target,0) AS 销售完成率 + FROM T1 LEFT JOIN T2 ON T1.organ_code = T2.organ_code +) +SELECT + ROW_NUMBER() OVER (ORDER BY 销售完成率 ${IF(p_yht = "低于50%","ASC","DESC")}) AS 序号, + organ_code, + organ_name, + sale_target, + sale_amt, + 销售完成率 +FROM T3 +WHERE 1=1 + ${IF(p_yht = "低于50%","AND 销售完成率 <= 0.5","AND 销售完成率 >= 0.5")} +ORDER BY 销售完成率 ${IF(p_yht = "低于50%","ASC","DESC")} \ No newline at end of file diff --git a/finereport/xiazuan/6_innovation/御和泰销售预警明细.sql b/finereport/xiazuan/6_innovation/御和泰销售预警明细.sql new file mode 100644 index 0000000..8e0c5ea --- /dev/null +++ b/finereport/xiazuan/6_innovation/御和泰销售预警明细.sql @@ -0,0 +1,63 @@ +-- 【1_report_御和泰销售情况】 + + +SELECT + T1.organ_name AS ORGAN_NAME + ,T1.comm_name AS COMM_NAME + ,T1.FINISH_RATE AS FINISH_RATE + ,T1.sale_target AS SALE_TARGET + ,T1.sale_amt AS SALE_AMT + ,ROW_NUMBER() OVER (ORDER BY T1.FINISH_RATE DESC) AS RK +FROM + ( + SELECT + + A.comm_name + ,A.organ_name + ,SUM(B.sale_target) AS sale_target + ,IFNULL(SUM(A.sale_amt) + SUM(B.sale_fact),0) AS sale_amt + ,CASE WHEN SUM(B.sale_target) = 0 THEN 0 + ELSE IFNULL(SUM(A.sale_amt) + SUM(B.sale_fact),0) / SUM(B.sale_target) END AS FINISH_RATE + FROM + ( + select + organ_code + ,organ_name + ,comm_id + ,comm_name + ,sum(case when create_ym = '202406' then 0 else yht_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 + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,SUM(IFNULL(index_yuhetai_target,0))*10000 AS sale_target + ,SUM(index_yuhetai_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 A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + GROUP BY + A.comm_name + ,A.organ_name + )T1 + diff --git a/finereport/xiazuan/6_innovation/新零售订单明细.sql b/finereport/xiazuan/6_innovation/新零售订单明细.sql new file mode 100644 index 0000000..c3d5fcd --- /dev/null +++ b/finereport/xiazuan/6_innovation/新零售订单明细.sql @@ -0,0 +1,65 @@ +-- ====================================== +-- 1_report_新零售订单明细 +-- ====================================== + +SELECT + T3.organ_code AS organ_code + ,T3.organ_name AS organ_name + ,T3.comm_id AS comm_id + ,T3.comm_name AS comm_name + ,T2.categoryLevel1 AS categoryLevel1-- 品类名称 + ,T2.goodsTitle AS goodsTitle -- 商品名称 + ,substr(T1.createTime,1,10) AS createTime -- 创建时间 + ,COUNT(T1.orderNo) AS orderNum -- 订单数量 + ,SUM(IFNULL(T1.salePrice,0)) - SUM(IFNULL(T1.refundCash,0)) AS AMOUNT-- 金额 + ,ROW_NUMBER() over (ORDER BY COUNT(T1.orderNo)) AS RK +FROM +( + SELECT + orderNo -- 订单号 + ,vid + ,vidName -- 项目名称 + ,salePrice -- 销售价格 + ,refundCash -- 退款金额 + ,createTime -- 创建时间 + FROM dw.dwd_innoveco_order_info_d -- 订单信息 + WHERE 1=1 + ${IF(LEN(p_startdate)>0,"AND createTime LIKE '"+FORMAT(p_startdate,"yyyy-MM")+"%'","")} + +)T1 +LEFT JOIN +( + SELECT + categoryLevel1 -- 品类名称 + ,skuNum -- 商品数量 + ,orderNo -- 订单号 + ,goodsTitle -- 商品名称 + FROM dw.dwd_innoveco_order_item_d -- 订单项信息 +)T2 +ON T1.orderNo = T2.orderNo +RIGHT JOIN +( + SELECT + -- DISTINCT + organ_code + , organ_name + , comm_id + , comm_name + , weim_comm_id + FROM dw.dim_organ_mapping +)T3 +ON T1.vid = T3.weim_comm_id +WHERE T3.comm_id IS NOT NULL +AND T1.createTime is not null +${IF(LEN(p_cate)>0," AND T2.categoryLevel1 IN ('"+JOINARRAY(p_cate,"','")+"')", "")} +${IF(LEN(p_good)>0," AND T2.goodsTitle IN ('"+JOINARRAY(p_good,"','")+"')", "")} +${IF(LEN(p_area)>0," AND T3.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +${if(left(fine_role,2)=="项目","and T3.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +GROUP BY +T3.organ_code +,T3.organ_name +,T3.comm_id +,T3.comm_name +,T2.categoryLevel1 +,T2.goodsTitle +,substr(T1.createTime,1,10) From 6db9c69da9190ed782916d74473616643256d889 Mon Sep 17 00:00:00 2001 From: kirito <1056700524@qq.com> Date: Fri, 9 Aug 2024 16:13:03 +0800 Subject: [PATCH 47/89] test --- dw/dwd/dwd_law_owed_info_d.sql | 66 ++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 31 deletions(-) diff --git a/dw/dwd/dwd_law_owed_info_d.sql b/dw/dwd/dwd_law_owed_info_d.sql index b2adb7c..264d385 100644 --- a/dw/dwd/dwd_law_owed_info_d.sql +++ b/dw/dwd/dwd_law_owed_info_d.sql @@ -1,33 +1,37 @@ select - a.id - , a.zt status_id -- 状态id - , case when a.zt = 0 then '正常' - when a.zt = 1 then '待移交' - when a.zt = 2 then '不移交' - when a.zt = 3 then '不移交申请中' - when a.zt = 4 then '非诉移交中' - when a.zt = 5 then '诉讼移交中' - when a.zt = 6 then '待诉讼处理' - when a.zt = 7 then '待非诉处理' - when a.zt = 8 then '催收中' - when a.zt = 9 then '完结' - when a.zt = 10 then '终本' - when a.zt = 11 then '强制退回中' - end status_name -- 状态名称 - , a.kxmc payment_name -- 款项名称 - , a.sszy belong_resource -- 所属资源 - , a.ssxm project_id -- 项目id - , b.xmmc project_name -- 项目名称 - , d.pqbm district_code -- 片区id - , d.pqmc district_name -- 片区名称 - , a.fyrq fee_date -- 费用日期 - , a.qfje owed_amt -- 欠费金额 - , a.yjje trans_amt -- 移交金额 - , b.xmbm project_code -- 项目编码 + a.id +, a.zt status_id -- 状态id +, case when a.zt = 0 then '正常' + when a.zt = 1 then '待移交' + when a.zt = 2 then '不移交' + when a.zt = 3 then '不移交申请中' + when a.zt = 4 then '非诉移交中' + when a.zt = 5 then '诉讼移交中' + when a.zt = 6 then '待诉讼处理' + when a.zt = 7 then '待非诉处理' + when a.zt = 8 then '催收中' + when a.zt = 9 then '完结' + when a.zt = 10 then '终本' + when a.zt = 11 then '强制退回中' + end status_name -- 状态名称 +, a.kxmc payment_name -- 款项名称 +, a.sszy belong_resource -- 所属资源 +, a.ssxm project_id -- 项目id +, b.xmmc project_name -- 项目名称 +, d.pqbm district_code -- 片区id +, d.pqmc district_name -- 片区名称 +, a.fyrq fee_date -- 费用日期 +, a.qfje owed_amt -- 欠费金额 +, a.yjje trans_amt -- 移交金额 +, b.xmbm project_code -- 项目编码 +, a.skje collect_amt -- 收款金额 +, a.fylx cost_type -- 费用类型 +, a.fymc cost_name -- 费用名称 +, a.hzls collect_unit -- 催收单位 from ods_oa_uf_wy_qf_d a - left join (select id, xmmc, xmbm from ods_oa_uf_wy_xm_d) b -- 项目 - on a.ssxm = b.id - left join (select id, left(pqbm,4) pqbm from ods_oa_uf_wy_pq_d where length(pqbm)=6) c -- 地区 - on a.sspq = c.id - left join (select pqbm, pqmc from ods_oa_uf_wy_pq_d where length(pqbm)=4) d -- 片区 - on c.pqbm = d.pqbm \ No newline at end of file +left join (select id, xmmc, xmbm from ods_oa_uf_wy_xm_d) b -- 项目 +on a.ssxm = b.id +left join (select id, left(pqbm,4) pqbm from ods_oa_uf_wy_pq_d where length(pqbm)=6) c -- 地区 +on a.sspq = c.id +left join (select pqbm, pqmc from ods_oa_uf_wy_pq_d where length(pqbm)=4) d -- 片区 +on c.pqbm = d.pqbm \ No newline at end of file From a88dc27180140d8267d9a7d3024bd18a792136ab Mon Sep 17 00:00:00 2001 From: yangkunan Date: Wed, 7 Aug 2024 18:28:53 +0800 Subject: [PATCH 48/89] =?UTF-8?q?=E7=A9=BA=E9=97=B4=E8=BF=90=E8=90=A5?= =?UTF-8?q?=E5=87=BA=E7=A7=9F=E7=8E=87=E6=98=8E=E7=BB=86=E8=A1=A8+?= =?UTF-8?q?=E5=A4=9A=E5=BE=84=E5=9B=9E=E6=AC=BE=E6=83=85=E5=86=B5=E3=80=81?= =?UTF-8?q?=E6=AC=A0=E8=B4=B9=E4=B8=8B=E9=92=BB=E6=98=8E=E7=BB=86=E8=A1=A8?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/codeStyles/codeStyleConfig.xml | 5 + .idea/sqldialects.xml | 2 + .../6_innovation/7_空间运营出租率明细.sql | 83 ++++++++++++++++ .../xiazuan/6_innovation/9_多径回款情况.sql | 95 +++++++++++++++++++ 4 files changed, 185 insertions(+) create mode 100644 .idea/codeStyles/codeStyleConfig.xml create mode 100644 finereport/xiazuan/6_innovation/7_空间运营出租率明细.sql create mode 100644 finereport/xiazuan/6_innovation/9_多径回款情况.sql diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..a55e7a1 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index ca23ea7..ad36fff 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -33,6 +33,8 @@ + + diff --git a/finereport/xiazuan/6_innovation/7_空间运营出租率明细.sql b/finereport/xiazuan/6_innovation/7_空间运营出租率明细.sql new file mode 100644 index 0000000..4197d10 --- /dev/null +++ b/finereport/xiazuan/6_innovation/7_空间运营出租率明细.sql @@ -0,0 +1,83 @@ +-- 【1_report_空间运营出租率明细】 +SELECT + ${IF(LEN(p_area)>0,"A.comm_name", "A.organ_name")} AS NAME + ,SUM(A.POINT_NUM ) AS POINT_NUM -- 点位数量 + ,SUM(B.point_num_total ) AS point_num_total-- 总点位数 + ,SUM(A.IS_ADD ) AS add_point_num -- 新增点位数 + ,SUM(B.point_num_valid ) AS point_num_valid -- 有效点位数 + ,SUM(B.point_num_invalid ) AS point_num_invalid -- 无效点位数 + ,SUM(B.point_num_rent ) AS point_num_rent -- 出租点位数 + ,SUM(A.Price ) AS Price -- 单价 + ,CASE WHEN SUM(B.point_num_total ) = 0 THEN 0 + ELSE SUM(B.point_num_valid ) / SUM(B.point_num_total ) END AS point_rent_rate -- 考核出租率 +FROM +( + SELECT + A2.organ_code AS organ_code -- 片区ID + ,A2.organ_name AS organ_name -- 片区名称 + ,A1.CommID AS CommID -- 项目id + ,A2.comm_name AS comm_name -- 项目名称 + ,A1.IS_ADD AS IS_ADD + ,A1.POINT_NUM AS POINT_NUM + ,A1.New_Price AS New_Price + ,A1.New_Price / A1.POINT_NUM AS Price + FROM + ( + SELECT + CommID -- 项目id + ,SUM(CASE WHEN PriceUnit like '%月%' THEN IFNULL(Price,0) * 12 ELSE IFNULL(Price,0) END) AS New_Price + ,SUM(CASE WHEN AddTime >= DATE_ADD(LAST_DAY(DATE_SUB(CURDATE(), INTERVAL 1 MONTH)), INTERVAL 1 DAY) THEN 1 + ELSE 0 END) AS IS_ADD + -- ,SUM(CASE WHEN AddTime >= CONCAT('${p_ym}','-01') THEN 1 + -- ELSE 0 END) AS IS_ADD + ,count(1) AS POINT_NUM -- 点位数量 + FROM dw.dim_innoveco_space_point_d -- 创新生态空间点位 + GROUP BY + CommID + )A1 + LEFT JOIN + ( + SELECT + comm_id + ,comm_name + ,organ_code + ,organ_name + FROM dw.dim_organ_mapping + GROUP BY + comm_id + ,comm_name + ,organ_code + ,organ_name + )A2 + -- ON A1.OrganCode = A2.organ_code + ON A1.CommID = A2.comm_id +)A +LEFT JOIN +( + SELECT + organ_code -- 片区ID + ,organ_name -- 片区名称 + ,comm_id -- 项目ID + ,comm_name -- 项目名称 + -- ,usestate -- 项目状态 + -- ,point_type -- 点位类型 + ,SUM(IFNULL(point_num_total ,0)) AS point_num_total -- 总点位数 + ,SUM(IFNULL(point_num_ismustdo ,0)) AS point_num_ismustdo -- 必做点位数 + ,SUM(IFNULL(point_num_zengzhi ,0)) AS point_num_zengzhi -- 增值点位数 + ,SUM(IFNULL(point_num_valid ,0)) AS point_num_valid -- 有效点位数 + ,SUM(IFNULL(point_num_invalid ,0)) AS point_num_invalid -- 无效点位数 + ,SUM(IF(usestate='使用',IFNULL(point_num_total,0),0)) AS point_num_rent -- 出租点位数 + FROM dw.dws_innoveco_point_summary -- 有效点位 + GROUP BY + organ_code -- 片区ID + ,organ_name -- 片区名称 + ,comm_id -- 项目ID + ,comm_name -- 项目名称 +)B +ON A.CommID = B.comm_id +AND A.organ_code = B.organ_code +WHERE B.comm_id IS NOT NULL +${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +${if(left(fine_role,2)=="项目","and A.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +GROUP BY +${IF(LEN(p_area)>0,"A.comm_name", "A.organ_name")} \ No newline at end of file diff --git a/finereport/xiazuan/6_innovation/9_多径回款情况.sql b/finereport/xiazuan/6_innovation/9_多径回款情况.sql new file mode 100644 index 0000000..bbb8066 --- /dev/null +++ b/finereport/xiazuan/6_innovation/9_多径回款情况.sql @@ -0,0 +1,95 @@ +-- 【1_report_多径回款情况】 + + +SELECT + business_code -- 业务域code + ,organ_code -- erp片区code + ,organ_name -- erp片区名称 + ,comm_id -- 项目id + ,comm_name -- 项目名称 + ,index_type -- 多经类别(社商/ 新零售、美居、附属资源/ 空间运营、资产运营/ 资产租售) + ,index_receivable -- 应收值 + ,index_receipts -- 实收值 + ,index_not_receipts -- 未回款数 + ,collection_rate -- 回款率 +FROM dw.ods_caiwu_profit +WHERE (index_receivable <> 0 OR index_receipts <> 0 OR index_not_receipts <> 0) + AND `year_month` = '${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_type)>0," AND index_type IN ('"+JOINARRAY(p_type,"','")+"')", "")} + + +-- 【2_业务条线】 +SELECT + DISTINCT + index_type +FROM dw.ods_caiwu_profit +; + +-- 【1_report_欠费下钻明细】 +SELECT + A.OrganCode AS OrganCode -- 片区编码 +,A.OrganName AS OrganName -- 片区名称 +,A.CommID AS CommID -- 项目id +,A.CommName AS CommName -- 项目名称 +,A.CustName AS CustName -- 客户姓名 商户 +,SUM(A.recev_amount) AS recev_amount-- 应收金额 +,A.AccountsDueDate AS AccountsDueDate -- 应收日期 +,SUM(A.paid_amount) AS paid_amount -- 实收金额 回款金额 +,SUM(A.recev_amount) - SUM(A.paid_amount) AS Arrears_amount -- 欠费金额 +,IF(SUM(A.recev_amount) = 0,0,SUM(A.paid_amount) /SUM(A.recev_amount)) AS PAID_AMOUNT_RATE +FROM +( + SELECT + OrganCode -- 片区编码 + ,OrganName -- 片区名称 + ,CommID -- 项目id + ,CommName -- 项目名称 + ,CustName -- 客户姓名 商户 + ,SUBSTR(AccountsDueDate,1,10) AS AccountsDueDate -- 应收日期 + ,CorpCostID + ,CASE WHEN BussType IN('新增','删除') THEN DealAmount ELSE 0 END AS recev_amount -- 应收金额 + ,CASE WHEN BussType IN('实收','撤销实收') THEN DealAmount ELSE 0 END AS paid_amount -- 实收金额 + FROM dw.ods_erp_tb_hspr_feesserial_${p_comm_id}_d + WHERE left(AccountsDueDate,7) = '${p_ym}' + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +)A +JOIN +( + SELECT + a.CorpCostID + ,a.CostName + FROM + ( + select + CorpCostID + ,CostCode + ,CostName + from dw.dim_corp_cost_item_d -- 总部费用科目 + where length(CostCode) != 4 + ) a + left join + ( + select + CorpCostID + ,CostCode + from dim_corp_cost_item_d + where length(CostCode) = 4 + ) b + on left(a.CostCode,4) = b.CostCode + where b.CostCode = '0007' +)B +ON A.CorpCostID = B.CorpCostID +GROUP BY +A.OrganCode +,A.OrganName +,A.CommID +,A.CommName +,A.CustName +,A.AccountsDueDate + + + + From dc8633b663b1105106fbf0e1b74d1e06e26f03a1 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Fri, 9 Aug 2024 09:10:43 +0800 Subject: [PATCH 49/89] =?UTF-8?q?=E6=8C=87=E6=A0=87=E9=A2=84=E8=AD=A6?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=98=8E=E7=BB=86=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 | 1 + .../EARLY_WARNING/看板数据预警-项目维度.sql | 236 ++++++++++++++++++ finereport/xiazuan/3_property/4_投诉明细.sql | 1 + 3 files changed, 238 insertions(+) create mode 100644 finereport/tianbao/EARLY_WARNING/看板数据预警-项目维度.sql diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index ad36fff..2ae5611 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -27,6 +27,7 @@ + diff --git a/finereport/tianbao/EARLY_WARNING/看板数据预警-项目维度.sql b/finereport/tianbao/EARLY_WARNING/看板数据预警-项目维度.sql new file mode 100644 index 0000000..09b8c01 --- /dev/null +++ b/finereport/tianbao/EARLY_WARNING/看板数据预警-项目维度.sql @@ -0,0 +1,236 @@ +-- ***************************** +-- 创建人员: 杨坤安 +-- 创建时间: 2024-08-08 +-- 功能描述: 看板数据预警-项目维度 +-- ***************************** + + +-- ------------------------------- +-- 财务 +-- ------------------------------- + + + + +-- ------------------------------- +-- 运营 +-- ------------------------------- + +SELECT +'运营' AS BUSINESS_TYPE -- 业务类型 +,organ_name AS ORGAN_NAME -- 片区名称 +,comm_name AS COMM_NAME -- 项目名称 +,'接房率低于80%的项目' AS INDICATOR_TYPE -- 指标类型 +,accept_num / room_num AS ACCEPT_NUM_RATE -- 接房率 +FROM dw.dws_operation_room_park_info_d +where accept_num / room_num < 0.8 +and comm_name not like '%案场%' and comm_name not like '%撤%' +UNION ALL +SELECT +'运营' AS BUSINESS_TYPE -- 业务类型 +,c.organ_name AS ORGAN_NAME -- 片区名称 +,c.comm_name AS COMM_NAME -- 项目名称 +,'计划即将到期项目' AS INDICATOR_TYPE -- 指标类型 +,count(1) AS PLAN_NUM -- 计划即将到期数量 +FROM +( + SELECT + a.plan_level, + jt.responsible_person1 , + a.id, + a.plan_status, + a.input_date, + a.end_date + FROM dwd_operations_plan_info_d a, + JSON_TABLE + ( + cast( CONCAT( '["', REPLACE ( responsible_person1, ',', '","' ), '"]' ) AS json ), + "$[*]" COLUMNS ( responsible_person1 INT PATH "$" ) + ) AS jt + where a.end_date > date_format(CURDATE() - INTERVAL 3 day,'%Y-%m-%d') + and a.end_date <= date_format(CURDATE(),'%Y-%m-%d') +) a +left join dw.ods_oa_hrmresource_d b +on a.responsible_person1 = b.id +left join +( + select + distinct organ_code + ,organ_name + ,comm_id + ,comm_name + ,oa_comm_id + from dim_organ_mapping where comm_id is not null +)c +on b.subcompanyid1 = c.oa_comm_id +GROUP BY c.organ_name, c.comm_name +UNION ALL +select +'运营' AS BUSINESS_TYPE -- 业务类型 +,organ_name AS ORGAN_NAME -- 片区名称 +,comm_name AS COMM_NAME -- 项目名称 +,'权责亏损项目-填报' AS INDICATOR_TYPE -- 指标类型 +,count(1) AS PROJECT_NUM -- 权责亏损项目数 +from ods_caiwu_feecollection +where yr_month = '2024-06' +and category = '物业' +and index_profit_fact < 0 +GROUP BY organ_name, comm_name +UNION ALL +-- ------------------------------- +-- 物业 +-- ------------------------------- +select +'物业' AS BUSINESS_TYPE -- 业务类型 +,organ_name AS ORGAN_NAME -- 片区名称 +,comm_name AS COMM_NAME -- 项目名称 +,'物业费实收总额(万元)' AS INDICATOR_TYPE -- 指标类型 +,sum(ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0)- ifnull(cu_offset_pr_amt,0) - ifnull(cu_paid_pr_amt,0))/10000 paid_amt +from dw.dwd_finance_fees_serial_d +where ParentCostCode = '0001' and left(ym,7) = left(CURRENT_DATE(),7) -- 当前月 +and organ_name not in ('东湖商管','领悦总部','演示机构') +GROUP BY organ_name, comm_name +UNION ALL +select +'物业' AS BUSINESS_TYPE -- 业务类型 +,organ_name AS ORGAN_NAME -- 片区名称 +,comm_name AS COMM_NAME -- 项目名称 +,'物业费收缴率' AS INDICATOR_TYPE -- 指标类型 +,sum(ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0)+(- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum(ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0)+ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0)) collection_rate +from dwd_finance_fees_serial_d +where ParentCostCode = '0001' +AND left(ym,7) = left(CURRENT_DATE(),7) -- 当前月 +GROUP BY organ_name, comm_name +UNION ALL +-- TODO +SELECT +'物业' AS BUSINESS_TYPE -- 业务类型 +,'' AS ORGAN_NAME -- 片区名称 +,'' AS COMM_NAME -- 项目名称 +,'案场服务费当期收缴率' AS INDICATOR_TYPE -- 指标类型 +,0 AS VALUE +FROM dual +UNION ALL +SELECT +'物业' AS BUSINESS_TYPE -- 业务类型 +,organ_name AS ORGAN_NAME -- 片区名称 +,comm_name AS COMM_NAME -- 项目名称 +,'投诉关闭率' AS INDICATOR_TYPE -- 指标类型 +, sum(tousu_close_incident_num) / sum(tousu_incident_num) AS tousu_close_rate +FROM dws_estate_incident_info_m +where incident_ym = replace(left(CURRENT_DATE(),7),'-','') +group BY organ_name, comm_name +UNION ALL +SELECT +'物业' AS BUSINESS_TYPE -- 业务类型 +,organ_name AS ORGAN_NAME -- 片区名称 +,comm_name AS COMM_NAME -- 项目名称 +,'报事关闭率' AS INDICATOR_TYPE -- 指标类型 +, sum(completed_incident_num - completed_not_close_incident_num) / sum(incident_num) AS close_rate +FROM dws_estate_incident_info_m +where incident_ym = replace(left(CURRENT_DATE(),7),'-','') +group BY organ_name, comm_name +UNION ALL + +-- ------------------------------- +-- 工程 +-- ------------------------------- + +SELECT +'工程' AS BUSINESS_TYPE -- 业务类型 + ,organ_name AS ORGAN_NAME -- 片区名称 +,comm_name AS COMM_NAME -- 项目名称 +,'水电收缴率' AS INDICATOR_TYPE -- 指标类型 +,sum((ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0))+(- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum((ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0))+(ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0))) collection_rate +from dwd_finance_fees_serial_d +where ParentCostCode = '0008' and MiddleCostCode in ('00080001','00080002','00080003','00080004','00080005','00080006','00080007','00080008','00080017','00080018','00080019','00080022','00080023','00080024','00080027','00080028','00080032','00080035') +and ym = left(CURRENT_DATE(),7) +GROUP BY organ_name, comm_name +UNION ALL +SELECT +'工程' AS BUSINESS_TYPE -- 业务类型 +,a.organ_name AS ORGAN_NAME -- 片区名称 +,a.comm_name AS COMM_NAME -- 项目名称 +,'停车场启费率-无法计算项目收缴率' AS INDICATOR_TYPE -- 指标类型 +,SUM(case when qifei_cost_num > 0 then 1 else 0 end) / sum(CNT) AS qifei_rate +from +( + select + a.organ_name + ,a.comm_name + ,sum(case when (ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0)) + (ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0)) + (- ifnull(cu_paid_pr_amt,0) + ifnull(cu_offset_pr_amt,0)) + (ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0)) !=0 then 1 else 0 end) qifei_cost_num + ,count(1) over() AS CNT + from + ( + select + distinct + organ_code + ,organ_name + ,comm_id + ,comm_name + from dim_organ_mapping + where comm_id is not null and comm_name not like '%撤场%' and comm_name not like '%案场%' and comm_name not like '%禁用%' and length(comm_id) != 0 + )a + left join + ( + select + * + from dwd_finance_fees_serial_d + where MiddleCostCode in ('00010003','00030001','00030002','00030003','00030004','00030005','00030006','00030007','00030008','00030009','00030010') + and ym = left(CURRENT_DATE(),7) + )b + on a.comm_id = b.commid + group by a.organ_name, a.comm_name +)a +GROUP BY a.organ_name, a.comm_name +UNION ALL +SELECT +'工程' AS BUSINESS_TYPE -- 业务类型 +,organ_name AS ORGAN_NAME -- 片区名称 +,comm_name AS COMM_NAME -- 项目名称 +,'设备设施完好率' AS INDICATOR_TYPE -- 指标类型 +,CASE WHEN sum(equipment_num) = 0 THEN 0 + else sum(good_equipment_num) / sum(equipment_num) END AS good_rate +FROM dws_engine_equipment_in_good_d +GROUP BY organ_name, comm_name +UNION ALL +SELECT +'工程' AS BUSINESS_TYPE -- 业务类型 +,organ_name AS ORGAN_NAME -- 片区名称 +,comm_name AS COMM_NAME -- 项目名称 +,'设备空间巡查完成率' AS INDICATOR_TYPE -- 指标类型 +,CASE WHEN SUM(task_num) = 0 THEN 0 ELSE SUM(task_finish_num) / SUM(task_num) END AS FINISH_RATE +FROM dws_engine_equipment_inspect_task_m +where task_ym = replace(left(CURRENT_DATE(),7),'-','') +GROUP BY organ_name, comm_name +UNION ALL +SELECT +'工程' AS BUSINESS_TYPE -- 业务类型 +,organ_name AS ORGAN_NAME -- 片区名称 +,comm_name AS COMM_NAME -- 项目名称 +,'异常抬杆比例' AS INDICATOR_TYPE -- 指标类型 +,CASE WHEN SUM(carflow) = 0 THEN 0 ELSE SUM(manualOutNum) / SUM(carflow) END AS 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_name, comm_name + +-- ------------------------------- +-- 创新 => 没有项目 +-- ------------------------------- + + + + +UNION ALL +-- ------------------------------- +-- 商业 +-- ------------------------------- + + + + + +-- ------------------------------- +-- 法务 +-- ------------------------------- + diff --git a/finereport/xiazuan/3_property/4_投诉明细.sql b/finereport/xiazuan/3_property/4_投诉明细.sql index 54c13ec..374911f 100644 --- a/finereport/xiazuan/3_property/4_投诉明细.sql +++ b/finereport/xiazuan/3_property/4_投诉明细.sql @@ -16,6 +16,7 @@ FROM ,SUM(IFNULL(tousu_incident_num,0)) AS tousu_incident_num -- 投诉量 FROM dw.dws_estate_incident_info_m where incident_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)+"'","")} GROUP BY organ_code From 3da2de050aaa82e17f4b1ac3e3576afec1e59d2f Mon Sep 17 00:00:00 2001 From: yangkunan Date: Fri, 9 Aug 2024 18:23:29 +0800 Subject: [PATCH 50/89] =?UTF-8?q?=E7=89=A9=E4=B8=9A=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 1 + finereport/kanban/mobile/物业_mobile.sql | 44 ++++++++++++++++++++++++ 看板上线后修改记录-杨坤安.md | 16 +++++++++ 3 files changed, 61 insertions(+) create mode 100644 看板上线后修改记录-杨坤安.md diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 2ae5611..d31dbf8 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -22,6 +22,7 @@ + diff --git a/finereport/kanban/mobile/物业_mobile.sql b/finereport/kanban/mobile/物业_mobile.sql index e69de29..fd788a9 100644 --- a/finereport/kanban/mobile/物业_mobile.sql +++ b/finereport/kanban/mobile/物业_mobile.sql @@ -0,0 +1,44 @@ +-- 【月报事率】 +select + incident_ym + , sum(response_timely_incident_num) / sum(incident_num) response_timely_rate + , sum(completed_incident_num) / sum(incident_num) completed_rate + , sum(completed_incident_num - completed_not_close_incident_num) / sum(incident_num) close_rate + , sum(follow_up_incident_num) / sum(incident_num) follow_up_rate + , sum(delay_incident_num) / sum(incident_num) delay_rate + , sum(delay_incident_num) delay_incident_num + , sum(follow_up_satisfied_incident_num) / sum(follow_up_incident_num) follow_up_satisfied_rate + , sum(follow_up_evaluate_incident_num) / sum(follow_up_incident_num) follow_up_satisfied_rate1 -- + + -- 回访满意量 / -- 回访量 + , sum(tousu_close_incident_num) / sum(tousu_incident_num) tousu_close_rate + , sum(tousu_incident_num) tousu_incident_num +FROM dws_estate_incident_info_m +where left(incident_ym,4) = '${left(p_ym,4)}' + AND incident_ym <> DATE_FORMAT(CURDATE(), '%Y%m') + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +group by incident_ym +order by incident_ym + + + +follow_up_satisfied_rate, EXACT( + incident_ym, + CONCATENATE( + year(TODAY()), -- 当前年 + if( + LEN(month(today())-1) = 1, -- + CONCATENATE("0",month(today())-1), + month(today())-1 + ) + ) + ) + +EXACT(text1,text2):检测两组文本是否相同。如果完全相同,EXACT函数返回TRUE;否则,返回FALSE。EXACT函数可以区分大小写,但忽略格式的不同。同时也可以利用EXACT函数来检测输入文档的文字。 +Text1:需要比较的第一组文本。 +Text2:需要比较的第二组文本。 +示例: +EXACT("Spreadsheet","Spreadsheet")等于TRUE。 +EXACT("Spreadsheet","S preadsheet")等于FALSE。 +EXACT("Spreadsheet","spreadsheet")等于FALSE。 \ No newline at end of file diff --git a/看板上线后修改记录-杨坤安.md b/看板上线后修改记录-杨坤安.md new file mode 100644 index 0000000..2578f41 --- /dev/null +++ b/看板上线后修改记录-杨坤安.md @@ -0,0 +1,16 @@ + + +# 【2024-08-09修改】 + +**物业看板** +- 延期单量想改报事回访评价满意度 【pc、移动已修改完成】 +- 折线图显示标签 【除客满情况未加,其余已加】 +- 收缴率改成按综合收缴率排名【pc、移动端已修改完成】 +- 综合收缴率放最前面【废弃】 +- 显示前3后3【完成】 +- 点击后扩展【完成】 +- 以最后一列排序,最后一列加粗【pc、移动端已修改完成】 +- 投诉按投诉量排名【pc、移动端已修改完成】 +- 报事信息不要 +- 监控筛选条件问题【已完成修改】 +- 监控放大问题【无法处理】 \ No newline at end of file From f9cf79224ecd62a500bd061bae7ca2791ec92ae9 Mon Sep 17 00:00:00 2001 From: kirito <1056700524@qq.com> Date: Fri, 9 Aug 2024 17:53:14 +0800 Subject: [PATCH 51/89] test --- dw/dim/dim_business_building_d.sql | 40 +++++++++++++++---------- dw/dim/dim_business_contract_type_d.sql | 12 ++++---- dw/dwd/dwd_innoveco_order_info_d.sql | 38 +++++++++++------------ 3 files changed, 49 insertions(+), 41 deletions(-) diff --git a/dw/dim/dim_business_building_d.sql b/dw/dim/dim_business_building_d.sql index afa2a50..d73e38e 100644 --- a/dw/dim/dim_business_building_d.sql +++ b/dw/dim/dim_business_building_d.sql @@ -1,16 +1,24 @@ -select - a.id - , a.project_id -- 项目id - , b.name project_name -- 项目名称 - , a.building_code -- 楼栋代码 - , a.name -- 名称 - , case when a.type = 1 then '集中商业' - when a.type = 2 then '写字楼' - when a.type = 4 then '底商' - when a.type = 5 then '商业街' - end type -- 类型 - , a.construction_area -- 建筑面积 -from ods_bs_building_d a - left join ods_bs_project_d b - on a.project_id = b.id -where a.del_flag = 0 \ No newline at end of file +SELECT + a.id, + a.project_id -- 项目id + ,b.NAME project_name -- 项目名称 + ,a.building_code -- 楼栋代码 + ,a.NAME -- 名称 + , +CASE + WHEN a.type = 1 THEN + '集中商业' + WHEN a.type = 2 THEN + '写字楼' + WHEN a.type = 4 THEN + '底商' + WHEN a.type = 5 THEN + '商业街' + END type -- 类型 + , + a.construction_area -- 建筑面积 +FROM + ods_bs_building_d a + LEFT JOIN ods_bs_project_d b ON a.project_id = b.id +WHERE + a.del_flag = 0 \ No newline at end of file diff --git a/dw/dim/dim_business_contract_type_d.sql b/dw/dim/dim_business_contract_type_d.sql index 11dd67b..94a4945 100644 --- a/dw/dim/dim_business_contract_type_d.sql +++ b/dw/dim/dim_business_contract_type_d.sql @@ -1,7 +1,7 @@ -select +SELECT id - , name -- 类型名称 - , parent_id -- 父id - , code -- 类型代码 -from ods_bs_contract_type_d -where del_flag = 0 \ No newline at end of file + , name -- 类型名称 + , parent_id -- 父id + , code -- 类型代码 +FROM ods_bs_contract_type_d +WHERE del_flag = 0 \ No newline at end of file diff --git a/dw/dwd/dwd_innoveco_order_info_d.sql b/dw/dwd/dwd_innoveco_order_info_d.sql index 530bfd3..6429d1f 100644 --- a/dw/dwd/dwd_innoveco_order_info_d.sql +++ b/dw/dwd/dwd_innoveco_order_info_d.sql @@ -1,24 +1,24 @@ select - a.orderNo - , from_unixtime(cast(left(a.createTime,10) as unsigned integer)) createTime -- 创建时间 - , from_unixtime(cast(left(a.confirmTime,10) as unsigned integer)) confirmTime -- 收货时间 - , a.orderStatus -- 订单状态 - , a.vid -- 项目id - , a.vidName -- 项目名称 - , b.salePrice -- 销售金额 - , c.refundCash -- 退款金额 + a.orderNo +, from_unixtime(cast(left(a.createTime,10) as unsigned integer)) createTime -- 创建时间 +, from_unixtime(cast(left(a.confirmTime,10) as unsigned integer)) confirmTime -- 收货时间 +, a.orderStatus -- 订单状态 +, a.vid -- 项目id +, a.vidName -- 项目名称 +, b.salePrice -- 销售金额 +, c.refundCash -- 退款金额 from ods_weimob_order_listsearch_orderinfo_d a - left join ( - select orderNo, sum(salePrice*skuNum) salePrice - from ods_weimob_order_listsearch_orderinfo_items_d - group by orderNo +left join ( + select orderNo, sum(salePrice*skuNum) salePrice + from ods_weimob_order_listsearch_orderinfo_items_d + group by orderNo ) b - on a.orderNo = b.orderNo - left join ( - select orderNo, sum(refundCash) refundCash - from ods_weimob_rights_list_d - where rightsstatus = '6' - group by orderNo +on a.orderNo = b.orderNo +left join ( + select orderNo, sum(refundCash) refundCash + from ods_weimob_rights_list_d + where rightsstatus = '6' + group by orderNo ) c - on a.orderNo = c.orderNo +on a.orderNo = c.orderNo where a.isDeleted = 0 and a.orderStatus != 9 \ No newline at end of file From 9a74c2d9492bbd74486ece115a31ead477489162 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Sat, 10 Aug 2024 23:26:29 +0800 Subject: [PATCH 52/89] =?UTF-8?q?=E6=80=BB=E8=A3=81=E5=AF=B9=E5=A4=96?= =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E6=95=B0=E6=8D=AE=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kanban/pc/总裁驾驶舱对外大屏数据集.sql | 1191 +++++++++++++++++ 1 file changed, 1191 insertions(+) create mode 100644 finereport/kanban/pc/总裁驾驶舱对外大屏数据集.sql diff --git a/finereport/kanban/pc/总裁驾驶舱对外大屏数据集.sql b/finereport/kanban/pc/总裁驾驶舱对外大屏数据集.sql new file mode 100644 index 0000000..db91875 --- /dev/null +++ b/finereport/kanban/pc/总裁驾驶舱对外大屏数据集.sql @@ -0,0 +1,1191 @@ +-- ***************************** +-- 创建人员: 杨坤安 +-- 创建时间: 2024-07-31 +-- 功能描述: 总裁驾驶舱对外看板数据初始化脚本 +-- ***************************** +-- 问题: 1. 如果加上片区维度,率值计算要在数据集中进行,需在表中增加基础指标,维护难度较大,所以不加片区+项目维度 + + + +-- ================================================== +-- 常规指标 +-- ================================================== + +DROP TABLE IF EXISTS dw.dws_president_base_index_d; +CREATE TABLE IF NOT EXISTS dw.dws_president_base_index_d ( + id INT AUTO_INCREMENT PRIMARY KEY +,CURRENT_DT VARCHAR(50) COMMENT '当前日期' +,INDEX_INCOME_FACT DECIMAL(12,4) COMMENT '收入' +,INCOME_COMPLETION_RATE DECIMAL(6,4) COMMENT '收入完成率' +,INDEX_COST_FACT DECIMAL(12,4) COMMENT '成本' +,COST_COMPLETION_RATE DECIMAL(6,4) COMMENT '成本完成率' +,INDEX_PROFIT_FACT DECIMAL(12,4) COMMENT '利润' +,PROFIT_COMPLETION_RATE DECIMAL(6,4) COMMENT '利润完成率' +,INDEX_MARKET_FACT DECIMAL(12,4) COMMENT '市拓' +,MARKET_COMPLETION_RATE DECIMAL(6,4) COMMENT '市拓完成率' +,TODAY_TOLL_FEE DECIMAL(12,4) COMMENT '今日收费(单位:万)' +,TYEAR_TOLL_FEE DECIMAL(12,4) COMMENT '年度累计收费(单位:万)' +,MON_TOLL_FEE DECIMAL(12,4) COMMENT '月度累计收费(单位:万)' +,CU_COLLECTION_RATE DECIMAL(6,4) COMMENT '当期收缴率' +,PR_COLLECTION_RATE DECIMAL(6,4) COMMENT '往期收缴率' +,COLLECTION_RATE DECIMAL(6,4) COMMENT '综合收缴率' +,PR_OWED_AMT DECIMAL(12,4) COMMENT '往期欠费金额(单位:万)' +,CU_OWED_AMT DECIMAL(12,4) COMMENT '当期欠费金额(单位:万)' +,ENERGY_CONSUMPTION_AMT DECIMAL(12,4) COMMENT '能耗收费' +,DEVICE_GOOD_RATE DECIMAL(6,4) COMMENT '设备完好率' +,DEVICE_SPACE_NORMAL_RATE DECIMAL(6,4) COMMENT '设备空间巡查完成率' +,NEC INT COMMENT '在职人数' +,FMR DECIMAL(6,4) COMMENT '满编率' +,FMR_TARGET DECIMAL(6,4) COMMENT '满编率目标值' +,TR DECIMAL(6,4) COMMENT '离职率' +,TR_TARGET DECIMAL(6,4) COMMENT '离职率目标值' +,AC_FEE_RATE DECIMAL(6,4) COMMENT '人力成本费率' +,AC_FEE_RATE_TARGET DECIMAL(6,4) COMMENT '人力成本费率目标值' +,ASSESSMENT_OCCUPANY_RATE DECIMAL(6,4) COMMENT '空间运营出租率' +,RETAIL_FINISH_RATE DECIMAL(6,4) COMMENT '新零售完成率' +,RENT_RATE DECIMAL(6,4) COMMENT '商业资产出租率' +,RENT_COLLECTION_RATE DECIMAL(6,4) COMMENT '租金收缴率' +,GUEST_ROOM_FEE DECIMAL(12,4) COMMENT '客房单价(单位:元)' +,GUEST_RENT_RATE DECIMAL(6,4) COMMENT '客房出租率' +)COMMENT = '总裁驾驶舱对外展示基础指标' +; + +TRUNCATE TABLE dw.dws_president_base_index_d + +INSERT INTO dws_president_base_index_d +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'FIN' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'财务' AS BUSINESS_NAME -- 业务类型名称 +,SUM(index_income_fact) AS INDEX_INCOME_FACT -- 收入 +,CASE WHEN SUM(index_income_target) = 0 THEN 0 + ELSE SUM(index_income_fact) / SUM(index_income_target) + END AS INCOME_COMPLETION_RATE -- 收入完成率 +,SUM(index_cost_fact) AS INDEX_COST_FACT -- 成本 +,CASE WHEN SUM(index_cost_target) = 0 THEN 0 + ELSE SUM(index_cost_fact) / SUM(index_cost_target) + END AS COST_COMPLETION_RATE -- 成本完成率 +,SUM(index_profit_fact) AS INDEX_PROFIT_FACT -- 利润 +,CASE WHEN SUM(index_profit_target) = 0 THEN 0 + ELSE SUM(index_profit_fact) / SUM(index_profit_target) + END AS PROFIT_COMPLETION_RATE -- 利润完成率 +,SUM(index_market_fact) AS INDEX_MARKET_FACT -- 市拓 +,CASE WHEN SUM(index_market_target) = 0 THEN 0 + ELSE SUM(index_market_fact) / SUM(index_market_target) + END AS MARKET_COMPLETION_RATE -- 市拓完成率 +,0 AS TODAY_TOLL_FEE -- 今日收费 +,0 AS TYEAR_TOLL_FEE -- 年度累计收费 +,0 AS MON_TOLL_FEE -- 月度累计收费 +,0 AS CU_COLLECTION_RATE -- 当期收缴率 +,0 AS PR_COLLECTION_RATE -- 往期收缴率 +,0 AS COLLECTION_RATE -- 综合收缴率 +,0 AS PR_OWED_AMT -- 往期欠费金额 +,0 AS CU_OWED_AMT -- 当期欠费金额 +,0 AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,0 AS DEVICE_GOOD_RATE -- 设备完好率 +,0 AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,0 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,0 AS RETAIL_FINISH_RATE -- 新零售完成率 +,0 AS RENT_RATE -- 商业资产出租率 +,0 AS RENT_COLLECTION_RATE -- 租金收缴率 +,0 AS GUEST_ROOM_FEE -- 客房单价 +,0 AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.ods_caiwu_feecollection +WHERE yr_month = '2024-06' +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'FIN' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'财务' AS BUSINESS_NAME -- 业务类型名称 +,0 AS INDEX_INCOME_FACT -- 收入 +,0 AS INCOME_COMPLETION_RATE -- 收入完成率 +,0 AS INDEX_COST_FACT -- 成本 +,0 AS COST_COMPLETION_RATE -- 成本完成率 +,0 AS INDEX_PROFIT_FACT -- 利润 +,0 AS PROFIT_COMPLETION_RATE -- 利润完成率 +,0 AS INDEX_MARKET_FACT -- 市拓 +,0 AS MARKET_COMPLETION_RATE -- 市拓完成率 +,sum(pr_paid_amt + cu_paid_amt + fu_paid_amt)/10000 AS TODAY_TOLL_FEE -- 今日收费 +,0 AS TYEAR_TOLL_FEE -- 年度累计收费 +,0 AS MON_TOLL_FEE -- 月度累计收费 +,0 AS CU_COLLECTION_RATE -- 当期收缴率 +,0 AS PR_COLLECTION_RATE -- 往期收缴率 +,0 AS COLLECTION_RATE -- 综合收缴率 +,0 AS PR_OWED_AMT -- 往期欠费金额 +,0 AS CU_OWED_AMT -- 当期欠费金额 +,0 AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,0 AS DEVICE_GOOD_RATE -- 设备完好率 +,0 AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,0 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,0 AS RETAIL_FINISH_RATE -- 新零售完成率 +,0 AS RENT_RATE -- 商业资产出租率 +,0 AS RENT_COLLECTION_RATE -- 租金收缴率 +,0 AS GUEST_ROOM_FEE -- 客房单价 +,0 AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.dws_finance_today_fees_d +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'FIN' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'财务' AS BUSINESS_NAME -- 业务类型名称 +,0 AS INDEX_INCOME_FACT -- 收入 +,0 AS INCOME_COMPLETION_RATE -- 收入完成率 +,0 AS INDEX_COST_FACT -- 成本 +,0 AS COST_COMPLETION_RATE -- 成本完成率 +,0 AS INDEX_PROFIT_FACT -- 利润 +,0 AS PROFIT_COMPLETION_RATE -- 利润完成率 +,0 AS INDEX_MARKET_FACT -- 市拓 +,0 AS MARKET_COMPLETION_RATE -- 市拓完成率 +,0 AS TODAY_TOLL_FEE -- 今日收费 +,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)/10000 + AS TYEAR_TOLL_FEE -- 年度累计收费 +,SUM(case when ym = '2024-07' then (pr_paid_cu_amt + cu_paid_cu_amt + pr_offset_cu_amt + cu_offset_cu_amt - cu_offset_pr_amt - cu_paid_pr_amt) else 0 end) /10000 + AS MON_TOLL_FEE -- 月度累计收费 +,0 AS CU_COLLECTION_RATE -- 当期收缴率 +,0 AS PR_COLLECTION_RATE -- 往期收缴率 +,0 AS COLLECTION_RATE -- 综合收缴率 +,0 AS PR_OWED_AMT -- 往期欠费金额 +,0 AS CU_OWED_AMT -- 当期欠费金额 +,0 AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,0 AS DEVICE_GOOD_RATE -- 设备完好率 +,0 AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,0 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,0 AS RETAIL_FINISH_RATE -- 新零售完成率 +,0 AS RENT_RATE -- 商业资产出租率 +,0 AS RENT_COLLECTION_RATE -- 租金收缴率 +,0 AS GUEST_ROOM_FEE -- 客房单价 +,0 AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.dws_finance_fees_serial_m +WHERE left(ym,4) = '2024' +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'FIN' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'财务' AS BUSINESS_NAME -- 业务类型名称 +,0 AS INDEX_INCOME_FACT -- 收入 +,0 AS INCOME_COMPLETION_RATE -- 收入完成率 +,0 AS INDEX_COST_FACT -- 成本 +,0 AS COST_COMPLETION_RATE -- 成本完成率 +,0 AS INDEX_PROFIT_FACT -- 利润 +,0 AS PROFIT_COMPLETION_RATE -- 利润完成率 +,0 AS INDEX_MARKET_FACT -- 市拓 +,0 AS MARKET_COMPLETION_RATE -- 市拓完成率 +,0 AS TODAY_TOLL_FEE -- 今日收费 +,0 AS TYEAR_TOLL_FEE -- 年度累计收费 +,0 AS MON_TOLL_FEE -- 月度累计收费 +,sum((ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0))) / sum((ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0))) + AS CU_COLLECTION_RATE -- 当期收缴率 +,sum((- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum((ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0))) + AS PR_COLLECTION_RATE -- 往期收缴率 +,sum((ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0))+(- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum((ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0))+(ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0))) + AS COLLECTION_RATE -- 综合收缴率 +,sum((ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0))-(- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0)))/10000 + AS PR_OWED_AMT -- 往期欠费金额 +,sum((ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0))-(ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0)))/10000 + AS CU_OWED_AMT -- 当期欠费金额 +,0 AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,0 AS DEVICE_GOOD_RATE -- 设备完好率 +,0 AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,0 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,0 AS RETAIL_FINISH_RATE -- 新零售完成率 +,0 AS RENT_RATE -- 商业资产出租率 +,0 AS RENT_COLLECTION_RATE -- 租金收缴率 +,0 AS GUEST_ROOM_FEE -- 客房单价 +,0 AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.dwd_finance_fees_serial_d +where ParentCostCode = '0001' and organ_name not in ('东湖商管','领悦总部','演示机构') +and ym = DATE_FORMAT(NOW(),'%Y-%m') +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'ENGINE' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'工程管理' AS BUSINESS_NAME -- 业务类型名称 +,0 AS INDEX_INCOME_FACT -- 收入 +,0 AS INCOME_COMPLETION_RATE -- 收入完成率 +,0 AS INDEX_COST_FACT -- 成本 +,0 AS COST_COMPLETION_RATE -- 成本完成率 +,0 AS INDEX_PROFIT_FACT -- 利润 +,0 AS PROFIT_COMPLETION_RATE -- 利润完成率 +,0 AS INDEX_MARKET_FACT -- 市拓 +,0 AS MARKET_COMPLETION_RATE -- 市拓完成率 +,0 AS TODAY_TOLL_FEE -- 今日收费 +,0 AS TYEAR_TOLL_FEE -- 年度累计收费 +,0 AS MON_TOLL_FEE -- 月度累计收费 +,0 AS CU_COLLECTION_RATE -- 当期收缴率 +,0 AS PR_COLLECTION_RATE -- 往期收缴率 +,0 AS COLLECTION_RATE -- 综合收缴率 +,0 AS PR_OWED_AMT -- 往期欠费金额 +,0 AS CU_OWED_AMT -- 当期欠费金额 +,sum(case when ym = '2024-07' and ParentCostCode = '0008' then (ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0) - ifnull(cu_offset_pr_amt,0) - ifnull(cu_paid_pr_amt,0)) else 0 end) /10000 + AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,0 AS DEVICE_GOOD_RATE -- 设备完好率 +,0 AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,0 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,0 AS RETAIL_FINISH_RATE -- 新零售完成率 +,0 AS RENT_RATE -- 商业资产出租率 +,0 AS RENT_COLLECTION_RATE -- 租金收缴率 +,0 AS GUEST_ROOM_FEE -- 客房单价 +,0 AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.dws_finance_fees_serial_m +WHERE left(ym,4) = '2024' +and organ_name not in ('东湖商管','领悦总部','演示机构') +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'ENGINE' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'工程管理' AS BUSINESS_NAME -- 业务类型名称 +,0 AS INDEX_INCOME_FACT -- 收入 +,0 AS INCOME_COMPLETION_RATE -- 收入完成率 +,0 AS INDEX_COST_FACT -- 成本 +,0 AS COST_COMPLETION_RATE -- 成本完成率 +,0 AS INDEX_PROFIT_FACT -- 利润 +,0 AS PROFIT_COMPLETION_RATE -- 利润完成率 +,0 AS INDEX_MARKET_FACT -- 市拓 +,0 AS MARKET_COMPLETION_RATE -- 市拓完成率 +,0 AS TODAY_TOLL_FEE -- 今日收费 +,0 AS TYEAR_TOLL_FEE -- 年度累计收费 +,0 AS MON_TOLL_FEE -- 月度累计收费 +,0 AS CU_COLLECTION_RATE -- 当期收缴率 +,0 AS PR_COLLECTION_RATE -- 往期收缴率 +,0 AS COLLECTION_RATE -- 综合收缴率 +,0 AS PR_OWED_AMT -- 往期欠费金额 +,0 AS CU_OWED_AMT -- 当期欠费金额 +,0 AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,CASE WHEN sum(equipment_num) = 0 THEN 0 + ELSE sum(good_equipment_num) / sum(equipment_num) + END AS DEVICE_GOOD_RATE -- 设备完好率 +,0 AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,0 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,0 AS RETAIL_FINISH_RATE -- 新零售完成率 +,0 AS RENT_RATE -- 商业资产出租率 +,0 AS RENT_COLLECTION_RATE -- 租金收缴率 +,0 AS GUEST_ROOM_FEE -- 客房单价 +,0 AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.dws_engine_equipment_in_good_d +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'ENGINE' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'工程管理' AS BUSINESS_NAME -- 业务类型名称 +,0 AS INDEX_INCOME_FACT -- 收入 +,0 AS INCOME_COMPLETION_RATE -- 收入完成率 +,0 AS INDEX_COST_FACT -- 成本 +,0 AS COST_COMPLETION_RATE -- 成本完成率 +,0 AS INDEX_PROFIT_FACT -- 利润 +,0 AS PROFIT_COMPLETION_RATE -- 利润完成率 +,0 AS INDEX_MARKET_FACT -- 市拓 +,0 AS MARKET_COMPLETION_RATE -- 市拓完成率 +,0 AS TODAY_TOLL_FEE -- 今日收费 +,0 AS TYEAR_TOLL_FEE -- 年度累计收费 +,0 AS MON_TOLL_FEE -- 月度累计收费 +,0 AS CU_COLLECTION_RATE -- 当期收缴率 +,0 AS PR_COLLECTION_RATE -- 往期收缴率 +,0 AS COLLECTION_RATE -- 综合收缴率 +,0 AS PR_OWED_AMT -- 往期欠费金额 +,0 AS CU_OWED_AMT -- 当期欠费金额 +,0 AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,0 AS DEVICE_GOOD_RATE -- 设备完好率 +,CASE WHEN sum(task_num) = 0 THEN 0 + ELSE SUM(task_finish_num) /sum(task_num) + END AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,0 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,0 AS RETAIL_FINISH_RATE -- 新零售完成率 +,0 AS RENT_RATE -- 商业资产出租率 +,0 AS RENT_COLLECTION_RATE -- 租金收缴率 +,0 AS GUEST_ROOM_FEE -- 客房单价 +,0 AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.dws_engine_equipment_inspect_task_m +WHERE task_ym = date_format(current_date(),'%Y%m') +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'INNOVA' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'创新生态' AS BUSINESS_NAME -- 业务类型名称 +,0 AS INDEX_INCOME_FACT -- 收入 +,0 AS INCOME_COMPLETION_RATE -- 收入完成率 +,0 AS INDEX_COST_FACT -- 成本 +,0 AS COST_COMPLETION_RATE -- 成本完成率 +,0 AS INDEX_PROFIT_FACT -- 利润 +,0 AS PROFIT_COMPLETION_RATE -- 利润完成率 +,0 AS INDEX_MARKET_FACT -- 市拓 +,0 AS MARKET_COMPLETION_RATE -- 市拓完成率 +,0 AS TODAY_TOLL_FEE -- 今日收费 +,0 AS TYEAR_TOLL_FEE -- 年度累计收费 +,0 AS MON_TOLL_FEE -- 月度累计收费 +,0 AS CU_COLLECTION_RATE -- 当期收缴率 +,0 AS PR_COLLECTION_RATE -- 往期收缴率 +,0 AS COLLECTION_RATE -- 综合收缴率 +,0 AS PR_OWED_AMT -- 往期欠费金额 +,0 AS CU_OWED_AMT -- 当期欠费金额 +,0 AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,0 AS DEVICE_GOOD_RATE -- 设备完好率 +,0 AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,assessment_occupany_rate / 100 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,0 AS RETAIL_FINISH_RATE -- 新零售完成率 +,0 AS RENT_RATE -- 商业资产出租率 +,0 AS RENT_COLLECTION_RATE -- 租金收缴率 +,0 AS GUEST_ROOM_FEE -- 客房单价 +,0 AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.dws_point_occupancy_rate_summary_all +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'INNOVA' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'创新生态' AS BUSINESS_NAME -- 业务类型名称 +,0 AS INDEX_INCOME_FACT -- 收入 +,0 AS INCOME_COMPLETION_RATE -- 收入完成率 +,0 AS INDEX_COST_FACT -- 成本 +,0 AS COST_COMPLETION_RATE -- 成本完成率 +,0 AS INDEX_PROFIT_FACT -- 利润 +,0 AS PROFIT_COMPLETION_RATE -- 利润完成率 +,0 AS INDEX_MARKET_FACT -- 市拓 +,0 AS MARKET_COMPLETION_RATE -- 市拓完成率 +,0 AS TODAY_TOLL_FEE -- 今日收费 +,0 AS TYEAR_TOLL_FEE -- 年度累计收费 +,0 AS MON_TOLL_FEE -- 月度累计收费 +,0 AS CU_COLLECTION_RATE -- 当期收缴率 +,0 AS PR_COLLECTION_RATE -- 往期收缴率 +,0 AS COLLECTION_RATE -- 综合收缴率 +,0 AS PR_OWED_AMT -- 往期欠费金额 +,0 AS CU_OWED_AMT -- 当期欠费金额 +,0 AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,0 AS DEVICE_GOOD_RATE -- 设备完好率 +,0 AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,0 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,CASE WHEN SUM(CASE WHEN revenue_type = '创新' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) = 0 THEN 0 + ELSE SUM(CASE WHEN revenue_type = '创新' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) +/ SUM(CASE WHEN revenue_type = '创新' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) + END AS RETAIL_FINISH_RATE -- 新零售完成率 +,0 AS RENT_RATE -- 商业资产出租率 +,0 AS RENT_COLLECTION_RATE -- 租金收缴率 +,0 AS GUEST_ROOM_FEE -- 客房单价 +,0 AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.ods_innoveco_metrics_finish_d +WHERE business_type in('收入','目标') -- 业务类型 +AND YM = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y-%m') -- 2024-06 当前月份的上一月 +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'OTHER' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'其他' AS BUSINESS_NAME -- 业务类型名称 +,0 AS INDEX_INCOME_FACT -- 收入 +,0 AS INCOME_COMPLETION_RATE -- 收入完成率 +,0 AS INDEX_COST_FACT -- 成本 +,0 AS COST_COMPLETION_RATE -- 成本完成率 +,0 AS INDEX_PROFIT_FACT -- 利润 +,0 AS PROFIT_COMPLETION_RATE -- 利润完成率 +,0 AS INDEX_MARKET_FACT -- 市拓 +,0 AS MARKET_COMPLETION_RATE -- 市拓完成率 +,0 AS TODAY_TOLL_FEE -- 今日收费 +,0 AS TYEAR_TOLL_FEE -- 年度累计收费 +,0 AS MON_TOLL_FEE -- 月度累计收费 +,0 AS CU_COLLECTION_RATE -- 当期收缴率 +,0 AS PR_COLLECTION_RATE -- 往期收缴率 +,0 AS COLLECTION_RATE -- 综合收缴率 +,0 AS PR_OWED_AMT -- 往期欠费金额 +,0 AS CU_OWED_AMT -- 当期欠费金额 +,0 AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,0 AS DEVICE_GOOD_RATE -- 设备完好率 +,0 AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,0 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,0 AS RETAIL_FINISH_RATE -- 新零售完成率 +,SUM(T.rentRoomAreaSum) / (SUM(T.rentRoomAreaSum) + SUM(T.notRentRoomAreaSum)) + AS RENT_RATE -- 商业资产出租率 +,0 AS RENT_COLLECTION_RATE -- 租金收缴率 +,0 AS GUEST_ROOM_FEE -- 客房单价 +,0 AS GUEST_RENT_RATE -- 客房出租率 +FROM +( + SELECT + B.`type` + ,SUM(CASE WHEN A.business_status = 1 THEN A.construction_area ELSE 0 END ) AS rentRoomAreaSum -- 出租面积 + ,SUM(CASE WHEN A.business_status != 4 AND A.business_status != 1 THEN A.construction_area ELSE 0 END ) AS notRentRoomAreaSum -- 未出租面积 + FROM + ( + SELECT + id + ,erp_id + ,building_id + ,business_status + ,construction_area -- 建筑面积 + FROM dw.ods_bs_room_d -- 商管房间表 + WHERE del_flag = 0 + AND enable_flag = 0 + AND review_status = 2 + )A + LEFT JOIN + ( + select + id + ,project_id + ,project_name + ,`type` -- 业态 商业街,集中商业,写字楼,底商 + from dim_business_building_d + )B + on A.building_id = B.id + GROUP BY + B.`type` +)T +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'OTHER' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'其他' AS BUSINESS_NAME -- 业务类型名称 +,0 AS INDEX_INCOME_FACT -- 收入 +,0 AS INCOME_COMPLETION_RATE -- 收入完成率 +,0 AS INDEX_COST_FACT -- 成本 +,0 AS COST_COMPLETION_RATE -- 成本完成率 +,0 AS INDEX_PROFIT_FACT -- 利润 +,0 AS PROFIT_COMPLETION_RATE -- 利润完成率 +,0 AS INDEX_MARKET_FACT -- 市拓 +,0 AS MARKET_COMPLETION_RATE -- 市拓完成率 +,0 AS TODAY_TOLL_FEE -- 今日收费 +,0 AS TYEAR_TOLL_FEE -- 年度累计收费 +,0 AS MON_TOLL_FEE -- 月度累计收费 +,0 AS CU_COLLECTION_RATE -- 当期收缴率 +,0 AS PR_COLLECTION_RATE -- 往期收缴率 +,0 AS COLLECTION_RATE -- 综合收缴率 +,0 AS PR_OWED_AMT -- 往期欠费金额 +,0 AS CU_OWED_AMT -- 当期欠费金额 +,0 AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,0 AS DEVICE_GOOD_RATE -- 设备完好率 +,0 AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,0 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,0 AS RETAIL_FINISH_RATE -- 新零售完成率 +,0 AS RENT_RATE -- 商业资产出租率 +,SUM(T.received_money) / SUM(T.current_sure_money) + AS RENT_COLLECTION_RATE -- 租金收缴率 +,0 AS GUEST_ROOM_FEE -- 客房单价 +,0 AS GUEST_RENT_RATE -- 客房出租率 +FROM +( + SELECT + T1.received_money AS received_money + ,T1.current_sure_money AS current_sure_money + + FROM + ( + SELECT + a.project_id -- 项目id 关联bs_project表 + ,SUM(a.received_money) AS received_money -- 实收金额 + ,SUM(a.current_sure_money) AS current_sure_money -- 实际应收金额=应收金额-合同减免金额 + -- ,SUM(a.under_money) AS under_money -- 欠收金额 + FROM + ( + SELECT + contract_id + ,accrual_month + ,start_period + ,bill_type + ,received_money -- 实收金额 + ,current_sure_money -- 实际应收金额=应收金额-合同减免金额 + ,current_sure_money - received_money as under_money -- 欠收金额 + ,project_id + FROM dw.ods_bs_fi_bills_d + WHERE save_status = 1 -- 账单状态 0是保存 1是审核过的 + -- ${if(len(project) == 0,"","AND project_id in (" + project + ")")} + )a + left join + ( + SELECT + status + ,stop_date + ,id + FROM dw.ods_bs_contract_d + WHERE del_flag = 0 + )bc + on bc.id = a.contract_id + WHERE ((bc.status != 2 and bc.stop_date is null) OR + (bc.stop_date is not null + and ((a.accrual_month <= DATE_FORMAT(bc.stop_date, '%Y-%m') + and a.start_period <= bc.stop_date) + + or a.bill_type = 15) + )) + group by + a.project_id + UNION ALL + SELECT + a.project_id + ,SUM(b.received_amount) AS received_money + ,SUM(b.received_money) AS current_sure_money + -- ,SUM(b.under_money) AS under_money + FROM + ( + SELECT + receive_no -- 催缴单号 + ,project_id + FROM dw.ods_bs_fi_receive_other_d + where recheck_status = 2 + )a + LEFT JOIN + ( + SELECT + receive_no + ,received_amount + ,received_money + ,received_money - received_amount AS under_money + FROM dw.ods_bs_fi_receive_other_item_d + )b + ON a.receive_no = b.receive_no + group by + project_id + )T1 + left join + ( + select + distinct id + ,erp_id + from dw.ods_bs_project_d + ) b + on T1.project_id = b.id + left join + ( + select + distinct + organ_code + ,organ_name + ,comm_id + ,comm_name + from dim_organ_mapping + where comm_id is not null + ) c + on b.erp_id = c.comm_id + where 1 = 1 +)T +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +-- ,'OTHER' AS BUSINESS_TYPE -- 业务类型编码 +-- ,'其他' AS BUSINESS_NAME -- 业务类型名称 +,0 AS INDEX_INCOME_FACT -- 收入 +,0 AS INCOME_COMPLETION_RATE -- 收入完成率 +,0 AS INDEX_COST_FACT -- 成本 +,0 AS COST_COMPLETION_RATE -- 成本完成率 +,0 AS INDEX_PROFIT_FACT -- 利润 +,0 AS PROFIT_COMPLETION_RATE -- 利润完成率 +,0 AS INDEX_MARKET_FACT -- 市拓 +,0 AS MARKET_COMPLETION_RATE -- 市拓完成率 +,0 AS TODAY_TOLL_FEE -- 今日收费 +,0 AS TYEAR_TOLL_FEE -- 年度累计收费 +,0 AS MON_TOLL_FEE -- 月度累计收费 +,0 AS CU_COLLECTION_RATE -- 当期收缴率 +,0 AS PR_COLLECTION_RATE -- 往期收缴率 +,0 AS COLLECTION_RATE -- 综合收缴率 +,0 AS PR_OWED_AMT -- 往期欠费金额 +,0 AS CU_OWED_AMT -- 当期欠费金额 +,0 AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,0 AS DEVICE_GOOD_RATE -- 设备完好率 +,0 AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,0 AS NEC -- 在职人数 +,0 AS FMR -- 满编率 +,0 AS FMR_TARGET -- 满编率目标值 +,0 AS TR -- 离职率 +,0 AS TR_TARGET -- 离职率目标值 +,0 AS AC_FEE_RATE -- 人力成本费率 +,0 AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,0 AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,0 AS RETAIL_FINISH_RATE -- 新零售完成率 +,0 AS RENT_RATE -- 商业资产出租率 +,0 AS RENT_COLLECTION_RATE -- 租金收缴率 +,AVG(price) AS GUEST_ROOM_FEE -- 客房单价 +,AVG(occupancy_rate) / 100 AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.ods_hotel_price +WHERE quanter = CASE WHEN quarter(CURRENT_TIMESTAMP()) - 1 = 1 THEN '一季度' + WHEN quarter(CURRENT_TIMESTAMP()) - 1 = 2 THEN '二季度' + WHEN quarter(CURRENT_TIMESTAMP()) - 1 = 3 THEN '三季度' + WHEN quarter(CURRENT_TIMESTAMP()) - 1 = 4 THEN '四季度' + ELSE 0 END +; + + +-- ================================================== +-- 指标卡|地图 +-- ================================================== + + +DROP TABLE IF EXISTS dw.dws_president_map_d; +CREATE TABLE IF NOT EXISTS dw.dws_president_map_d ( + CURRENT_DT VARCHAR(50) COMMENT '当期日期' +,PROVINCE VARCHAR(100) COMMENT '省份' +,CITY VARCHAR(100) COMMENT '城市' +,COUNTY VARCHAR(100) COMMENT '县' +,TREATY_AREA DECIMAL(12,4) COMMENT '合约面积(万m²)' +,MANAGE_AREA DECIMAL(12,4) COMMENT '在管面积(万m²)' +,ROOM_NUM BIGINT COMMENT '总户数(户)' +,COMM_NUM BIGINT COMMENT '在管项目数(个)' +)COMMENT = '总裁驾驶舱对外展示地图指标' +; + + +TRUNCATE TABLE dw.dws_president_map_d +DELETE FROM dw.dws_president_map_d WHERE CURRENT_DT = '2024-08-02'; + +INSERT INTO dw.dws_president_map_d +SELECT +current_date() AS CURRENT_DT -- 当前日期 +,a.Province AS PROVINCE -- 省份 +,a.City AS CITY -- 城市 +,a.County AS COUNTY -- 县 +,round(sum(a.ContractArea) / 10000,2) AS TREATY_AREA -- 合约面积(万m²) +,sum(a.ManageContractArea) / 10000 AS MANAGE_AREA -- 在管面积(万m²) +,sum(c.room_num) AS ROOM_NUM -- 总户数(户) +,count(*) AS COMM_NUM -- 在管项目数 +FROM dim_project_base_info_d a +inner join (select distinct organ_code, organ_name, comm_id , comm_name from dim_organ_mapping where comm_id is not null and comm_name not like '%撤场%' and comm_name not like '%案场%' and comm_name not like '%禁用%' +and length(comm_id) != 0) b +on a.CommId = b.comm_id +left join ( + select + CommID, count(*) room_num + from dim_room_d + group by CommID +) c on a.CommId = c.CommID +where 1=1 +group by +a.Province +,a.City +,a.County +; + +-- ================================================== +-- 图表 +-- ================================================== + +DROP TABLE IF EXISTS dw.dws_president_chart_d; +CREATE TABLE IF NOT EXISTS dw.dws_president_chart_d ( +CURRENT_DT VARCHAR(50) COMMENT '年' +,YM VARCHAR(100) COMMENT '年月' +,MONTHS VARCHAR(100) COMMENT '月份' +,CURRENT_QUARTER VARCHAR(100) COMMENT '年月归属季度' +,PLAN_NUM INT COMMENT '计划总数' +,PLAN_INCOMPLETE_NUM INT COMMENT '未完成计划数量' +,PLAN_COMPLETE_RATE DECIMAL(6,4) COMMENT '计划完成率' +,KM_TARGET DECIMAL(6,4) COMMENT '客满目标得分' +,KM_DF DECIMAL(6,4) COMMENT '客满得分' +,RESPONSE_TIMELY_RATE DECIMAL(6,4) COMMENT '响应率' +,CLOSE_RATE DECIMAL(6,4) COMMENT '闭单率' +,DELAY_RATE DECIMAL(6,4) COMMENT '延期率' +,TOUSU_INCIDENT_NUM INT COMMENT '投诉总量' +,TOUSU_PER_ROOM_RATE INT COMMENT '每万户平均投诉量' +)COMMENT = '总裁驾驶舱对外展示图表指标' + + +DELETE FROM dw.dws_president_chart_d WHERE CURRENT_DT = '2024-08-01'; +TRUNCATE TABLE dw.dws_president_chart_d; + +INSERT INTO dw.dws_president_chart_d +SELECT +current_date() AS CURRENT_DT -- 当前日期 +,ym AS YM -- 年月 +,concat(right(ym,2) + 0 , '月') AS MONTHS +,'' AS CURRENT_QUARTER -- 年月归属季度 +,sum(plan_num) AS PLAN_NUM -- 计划总数 +,sum(plan_incomplete_num) AS PLAN_INCOMPLETE_NUM -- 未完成计划数量 +,CASE WHEN sum(plan_num) = 0 THEN 0 + ELSE sum(plan_complete_num) / sum(plan_num) + END AS PLAN_COMPLETE_RATE -- 计划完成率 +,0 AS KM_TARGET -- 客满目标得分 +,0 AS KM_DF -- 客满得分 +,0 AS RESPONSE_TIMELY_RATE -- 响应率 +,0 AS CLOSE_RATE -- 闭单率 +,0 AS DELAY_RATE -- 延期率 +,0 AS TOUSU_INCIDENT_NUM -- 投诉总量 +,0 AS TOUSU_PER_ROOM_RATE -- 每万户平均投诉量 +FROM dw.dws_operation_plan_summary_m a +left join + ( + select + distinct + organ_code + , organ_name + , comm_id + , comm_name +, oa_organ_code +, oa_organ_name +, oa_comm_id +, oa_comm_name +from dim_organ_mapping where comm_id is not null +) b +on a.subcompanyid = b.oa_comm_id +where 1=1 +and ym <= DATE_FORMAT(NOW(),'%Y-%m') +and STR_TO_DATE(concat(ym,'-01'),'%Y-%m-%d') >= DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 6 MONTH),'%Y-%m-01') +and left(ym,4) = DATE_FORMAT(NOW(),'%Y') +group by ym +-- order by ym asc +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +,NULL AS YM -- 年月 +,NULL AS MONTHS +,t1.jd AS CURRENT_QUARTER -- 年月归属季度 +,0 AS PLAN_NUM -- 计划总数 +,0 AS PLAN_INCOMPLETE_NUM -- 未完成计划数量 +,0 AS PLAN_COMPLETE_RATE -- 计划完成率 +,t1.km_target AS KM_TARGET -- 客满目标得分 +,t2.df AS KM_DF -- 客满得分 +,0 AS RESPONSE_TIMELY_RATE -- 响应率 +,0 AS CLOSE_RATE -- 闭单率 +,0 AS DELAY_RATE -- 延期率 +,0 AS TOUSU_INCIDENT_NUM -- 投诉总量 +,0 AS TOUSU_PER_ROOM_RATE -- 每万户平均投诉量 +FROM +( + select + '一季度' AS jd + ,km_target + from ods_wuye_gszt + where km_target is not null + and yr = YEAR(now()) + group by + km_target + union all + select + '二季度' AS jd + ,km_target + from ods_wuye_gszt + where km_target is not null + and yr = YEAR(now()) + group by + km_target + union all + select + '三季度' AS jd + ,km_target + from ods_wuye_gszt + where km_target is not null + and yr = YEAR(now()) + group by + km_target + union all + select + '四季度' AS jd + ,km_target + from ods_wuye_gszt + where km_target is not null + and yr = YEAR(now()) + group by + km_target +)t1 +left join +( + select + jd + ,df + from ods_wuye_gszt + where df is not null + AND zq = '物业整体' +)t2 +on t1.jd = t2.jd +UNION ALL +SELECT +current_date() AS CURRENT_DT -- 当前日期 +,a.incident_ym AS YM -- 年月 +,concat(right(a.incident_ym,2) + 0 , '月') AS MONTHS +,0 AS CURRENT_QUARTER -- 年月归属季度 +,0 AS PLAN_NUM -- 计划总数 +,0 AS PLAN_INCOMPLETE_NUM -- 未完成计划数量 +,0 AS PLAN_COMPLETE_RATE -- 计划完成率 +,0 AS KM_TARGET -- 客满目标得分 +,0 AS KM_DF -- 客满得分 +, sum(response_timely_incident_num) / sum(incident_num) AS RESPONSE_TIMELY_RATE -- 响应率 +, sum(completed_incident_num - completed_not_close_incident_num) / sum(incident_num) + AS CLOSE_RATE -- 闭单率 +,sum(delay_incident_num) / sum(incident_num) + AS DELAY_RATE -- 延期率 +,sum(tousu_incident_num) + AS TOUSU_INCIDENT_NUM -- 投诉总量 +,(sum(tousu_incident_num) / sum(room_num)) * 10000 AS TOUSU_PER_ROOM_RATE -- 每万户平均投诉量 +FROM dws_estate_incident_info_m a +left join +( + select + CommID, count(*) room_num + from dim_room_d + group by CommID +)b +on a.comm_id = b.CommId +where left(a.incident_ym,4) = '2024' +group by a.incident_ym +-- order by a.incident_ym +; + + +SELECT + SUM(CURRENT_DT ) AS CURRENT_DT -- 当期日期 +,SUM(INDEX_INCOME_FACT ) AS INDEX_INCOME_FACT -- 收入 +,SUM(INCOME_COMPLETION_RATE ) AS INCOME_COMPLETION_RATE -- 收入完成率 +,SUM(INDEX_COST_FACT ) AS INDEX_COST_FACT -- 成本 +,SUM(COST_COMPLETION_RATE ) AS COST_COMPLETION_RATE -- 成本完成率 +,SUM(INDEX_PROFIT_FACT ) AS INDEX_PROFIT_FACT -- 利润 +,SUM(PROFIT_COMPLETION_RATE ) AS PROFIT_COMPLETION_RATE -- 利润完成率 +,SUM(INDEX_MARKET_FACT ) AS INDEX_MARKET_FACT -- 市拓 +,SUM(MARKET_COMPLETION_RATE ) AS MARKET_COMPLETION_RATE -- 市拓完成率 +,SUM(TODAY_TOLL_FEE ) AS TODAY_TOLL_FEE -- 今日收费(单位:万) +,SUM(TYEAR_TOLL_FEE ) AS TYEAR_TOLL_FEE -- 年度累计收费(单位:万) +,SUM(MON_TOLL_FEE ) AS MON_TOLL_FEE -- 月度累计收费(单位:万) +,SUM(CU_COLLECTION_RATE ) AS CU_COLLECTION_RATE -- 当期收缴率 +,SUM(PR_COLLECTION_RATE ) AS PR_COLLECTION_RATE -- 往期收缴率 +,SUM(COLLECTION_RATE ) AS COLLECTION_RATE -- 综合收缴率 +,SUM(PR_OWED_AMT ) AS PR_OWED_AMT -- 往期欠费金额(单位:万) +,SUM(CU_OWED_AMT ) AS CU_OWED_AMT -- 当期欠费金额(单位:万) +,SUM(ENERGY_CONSUMPTION_AMT ) AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,SUM(DEVICE_GOOD_RATE ) AS DEVICE_GOOD_RATE -- 设备完好率 +,SUM(DEVICE_SPACE_NORMAL_RATE ) AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,SUM(NEC ) AS NEC -- 在职人数 +,SUM(FMR ) AS FMR -- 满编率 +,SUM(FMR_TARGET ) AS FMR_TARGET -- 满编率目标值 +,SUM(TR ) AS TR -- 离职率 +,SUM(TR_TARGET ) AS TR_TARGET -- 离职率目标值 +,SUM(AC_FEE_RATE ) AS AC_FEE_RATE -- 人力成本费率 +,SUM(AC_FEE_RATE_TARGET ) AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,SUM(ASSESSMENT_OCCUPANY_RATE ) AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,SUM(RETAIL_FINISH_RATE ) AS RETAIL_FINISH_RATE -- 新零售完成率 +,SUM(RENT_RATE ) AS RENT_RATE -- 商业资产出租率 +,SUM(RENT_COLLECTION_RATE ) AS RENT_COLLECTION_RATE -- 租金收缴率 +,SUM(GUEST_ROOM_FEE ) AS GUEST_ROOM_FEE -- 客房单价(单位:元) +,SUM(GUEST_RENT_RATE ) AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.dws_president_base_index_d +WHERE CURRENT_DT = '2024-07-31' + + + + + +-- 2_president_map_对外 + +SELECT + CURRENT_DT -- 当期日期 +,PROVINCE -- 省份 +,CITY -- 城市 +,COUNTY -- 县 +,TREATY_AREA -- 合约面积(万m²) +,MANAGE_AREA -- 在管面积(万m²) +,ROOM_NUM -- 总户数(户) +,COMM_NUM -- 在管项目数(个) +FROM dw.dws_president_map_d +WHERE CURRENT_DT = '2024-07-31' + + + +sum(b_president_map_对外.select(COMM_NUM)) + +sum(b_president_map_对外.select(TREATY_AREA)) + + +sum(b_president_map_对外.select(MANAGE_AREA)) + + +sum(b_president_map_对外.select(ROOM_NUM)) + + + +-- c_president_chart_plan_对外 + + +SELECT +YM +,PLAN_NUM AS PLAN_NUM -- 计划总数 +,PLAN_INCOMPLETE_NUM PLAN_INCOMPLETE_NUM -- 未完成计划数量 +,PLAN_COMPLETE_RATE AS PLAN_COMPLETE_RATE -- 计划完成率 +FROM dw.dws_president_chart_d +WHERE CURRENT_DT = '${p_ym}' +AND length(YM) = 4 + + + +-- d_president_chart_km_对外 + +SELECT +CURRENT_DT -- 年 +,CURRENT_QUARTER -- 年月归属季度 +,KM_TARGET -- 客满目标得分 +,KM_DF -- 客满得分 +FROM dw.dws_president_chart_d +WHERE CURRENT_DT = '2024-08-02' +AND CURRENT_QUARTER LIKE '%季度%' + + + +-- e_president_chart_complaints_对外 + + + +SELECT +CURRENT_DT -- 年 +,ym -- 年月 +,RESPONSE_TIMELY_RATE -- 响应率 +,CLOSE_RATE -- 闭单率 +,DELAY_RATE -- 延期率 +,TOUSU_INCIDENT_NUM -- 投诉总量 +,TOUSU_PER_ROOM_RATE -- 每万户平均投诉量 +FROM dw.dws_president_chart_d +WHERE CURRENT_DT = '2024-08-02' +AND length(YM) = 6 + + + + + + +SELECT +CURRENT_DT -- 年 +,YM -- 年月 +,CURRENT_QUARTER -- 年月归属季度 +,PLAN_NUM -- 计划总数 +,PLAN_INCOMPLETE_NUM -- 未完成计划数量 +,PLAN_COMPLETE_RATE -- 计划完成率 +,KM_TARGET -- 客满目标得分 +,KM_DF -- 客满得分 +,RESPONSE_TIMELY_RATE -- 响应率 +,CLOSE_RATE -- 闭单率 +,DELAY_RATE -- 延期率 +,TOUSU_INCIDENT_NUM -- 投诉总量 +,TOUSU_PER_ROOM_RATE -- 每万户平均投诉量 +FROM dw.dws_president_chart_d +WHERE CURRENT_DT = '${p_ym}' + + + + + + +SELECT +T.CURRENT_QUARTER AS CURRENT_QUARTER +,T.KM_TARGET AS KM_TARGET +,T.KM_DF AS KM_DF +FROM +( +SELECT + + CURRENT_QUARTER -- 年月归属季度 +,KM_TARGET -- 客满目标得分 +,KM_DF -- 客满得分 +,CASE WHEN CURRENT_QUARTER = '一季度' THEN 1 + WHEN CURRENT_QUARTER = '二季度' THEN 2 + WHEN CURRENT_QUARTER = '三季度' THEN 3 + WHEN CURRENT_QUARTER = '四季度' THEN 4 + END AS RK +FROM dw.dws_president_chart_d +WHERE CURRENT_DT = '${p_ym}' +AND CURRENT_QUARTER LIKE '%季度%' +)T +ORDER BY T.RK +; + + + +SELECT +CURRENT_DT -- 年 +,CURRENT_QUARTER -- 年月归属季度 +,KM_TARGET -- 客满目标得分 +,KM_DF -- 客满得分 +FROM dw.dws_president_chart_d +WHERE CURRENT_DT = '${p_ym}' +AND CURRENT_QUARTER LIKE '%季度%' +; + + + + + +-- OR(A3 == "1月",A3 == "2月",A3 == "3月" ,A3 == "4月", A3 == "5月",A3 == "6月",A3 == "7月",A3 == "8月" ,A3 == "9月", A3 == "10月",A3 == "11月",A3 == "12月") + + + +-- OR(A3 == "一季度",A3 == "二季度",A3 == "三季度" ,A3 == "四季度") + + + + + + +SELECT + + INDEX_INCOME_FACT AS INDEX_INCOME_FACT -- 收入 +,INCOME_COMPLETION_RATE AS INCOME_COMPLETION_RATE -- 收入完成率 +,INDEX_COST_FACT AS INDEX_COST_FACT -- 成本 +,COST_COMPLETION_RATE AS COST_COMPLETION_RATE -- 成本完成率 +,INDEX_PROFIT_FACT AS INDEX_PROFIT_FACT -- 利润 +,PROFIT_COMPLETION_RATE AS PROFIT_COMPLETION_RATE -- 利润完成率 +,INDEX_MARKET_FACT AS INDEX_MARKET_FACT -- 市拓 +,MARKET_COMPLETION_RATE AS MARKET_COMPLETION_RATE -- 市拓完成率 +,TODAY_TOLL_FEE AS TODAY_TOLL_FEE -- 今日收费(单位:万) +,TYEAR_TOLL_FEE AS TYEAR_TOLL_FEE -- 年度累计收费(单位:万) +,MON_TOLL_FEE AS MON_TOLL_FEE -- 月度累计收费(单位:万) +,CU_COLLECTION_RATE AS CU_COLLECTION_RATE -- 当期收缴率 +,PR_COLLECTION_RATE AS PR_COLLECTION_RATE -- 往期收缴率 +,COLLECTION_RATE AS COLLECTION_RATE -- 综合收缴率 +,PR_OWED_AMT AS PR_OWED_AMT -- 往期欠费金额(单位:万) +,CU_OWED_AMT AS CU_OWED_AMT -- 当期欠费金额(单位:万) +,ENERGY_CONSUMPTION_AMT AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,DEVICE_GOOD_RATE AS DEVICE_GOOD_RATE -- 设备完好率 +,DEVICE_SPACE_NORMAL_RATE AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,NEC AS NEC -- 在职人数 +,FMR AS FMR -- 满编率 +,FMR_TARGET AS FMR_TARGET -- 满编率目标值 +,TR AS TR -- 离职率 +,TR_TARGET AS TR_TARGET -- 离职率目标值 +,AC_FEE_RATE AS AC_FEE_RATE -- 人力成本费率 +,AC_FEE_RATE_TARGET AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,ASSESSMENT_OCCUPANY_RATE AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,RETAIL_FINISH_RATE AS RETAIL_FINISH_RATE -- 新零售完成率 +,RENT_RATE AS RENT_RATE -- 商业资产出租率 +,RENT_COLLECTION_RATE AS RENT_COLLECTION_RATE -- 租金收缴率 +,GUEST_ROOM_FEE AS GUEST_ROOM_FEE -- 客房单价(单位:元) +,GUEST_RENT_RATE AS GUEST_RENT_RATE -- 客房出租率 +FROM dw.dws_president_base_index_d +; + + + +SELECT + T.INDEX_INCOME_FACT AS INDEX_INCOME_FACT -- 收入 +,T.INCOME_COMPLETION_RATE AS INCOME_COMPLETION_RATE -- 收入完成率 +,T.INDEX_COST_FACT AS INDEX_COST_FACT -- 成本 +,T.COST_COMPLETION_RATE AS COST_COMPLETION_RATE -- 成本完成率 +,T.INDEX_PROFIT_FACT AS INDEX_PROFIT_FACT -- 利润 +,T.PROFIT_COMPLETION_RATE AS PROFIT_COMPLETION_RATE -- 利润完成率 +,T.INDEX_MARKET_FACT AS INDEX_MARKET_FACT -- 市拓 +,T.MARKET_COMPLETION_RATE AS MARKET_COMPLETION_RATE -- 市拓完成率 +,T.TODAY_TOLL_FEE AS TODAY_TOLL_FEE -- 今日收费(单位:万) +,T.TYEAR_TOLL_FEE AS TYEAR_TOLL_FEE -- 年度累计收费(单位:万) +,T.MON_TOLL_FEE AS MON_TOLL_FEE -- 月度累计收费(单位:万) +,T.CU_COLLECTION_RATE AS CU_COLLECTION_RATE -- 当期收缴率 +,T.PR_COLLECTION_RATE AS PR_COLLECTION_RATE -- 往期收缴率 +,T.COLLECTION_RATE AS COLLECTION_RATE -- 综合收缴率 +,T.PR_OWED_AMT AS PR_OWED_AMT -- 往期欠费金额(单位:万) +,T.CU_OWED_AMT AS CU_OWED_AMT -- 当期欠费金额(单位:万) +,T.ENERGY_CONSUMPTION_AMT AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,T.DEVICE_GOOD_RATE AS DEVICE_GOOD_RATE -- 设备完好率 +,T.DEVICE_SPACE_NORMAL_RATE AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,T.NEC AS NEC -- 在职人数 +,T.FMR AS FMR -- 满编率 +,T.FMR_TARGET AS FMR_TARGET -- 满编率目标值 +,T.TR AS TR -- 离职率 +,T.TR_TARGET AS TR_TARGET -- 离职率目标值 +,T.AC_FEE_RATE AS AC_FEE_RATE -- 人力成本费率 +,T.AC_FEE_RATE_TARGET AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,T.ASSESSMENT_OCCUPANY_RATE AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,T.RETAIL_FINISH_RATE AS RETAIL_FINISH_RATE -- 新零售完成率 +,T.RENT_RATE AS RENT_RATE -- 商业资产出租率 +,T.RENT_COLLECTION_RATE AS RENT_COLLECTION_RATE -- 租金收缴率 +,T.GUEST_ROOM_FEE AS GUEST_ROOM_FEE -- 客房单价(单位:元) +,T.GUEST_RENT_RATE AS GUEST_RENT_RATE -- 客房出租率 +FROM +( +SELECT + INDEX_INCOME_FACT AS INDEX_INCOME_FACT -- 收入 +,INCOME_COMPLETION_RATE AS INCOME_COMPLETION_RATE -- 收入完成率 +,INDEX_COST_FACT AS INDEX_COST_FACT -- 成本 +,COST_COMPLETION_RATE AS COST_COMPLETION_RATE -- 成本完成率 +,INDEX_PROFIT_FACT AS INDEX_PROFIT_FACT -- 利润 +,PROFIT_COMPLETION_RATE AS PROFIT_COMPLETION_RATE -- 利润完成率 +,INDEX_MARKET_FACT AS INDEX_MARKET_FACT -- 市拓 +,MARKET_COMPLETION_RATE AS MARKET_COMPLETION_RATE -- 市拓完成率 +,TODAY_TOLL_FEE AS TODAY_TOLL_FEE -- 今日收费(单位:万) +,TYEAR_TOLL_FEE AS TYEAR_TOLL_FEE -- 年度累计收费(单位:万) +,MON_TOLL_FEE AS MON_TOLL_FEE -- 月度累计收费(单位:万) +,CU_COLLECTION_RATE AS CU_COLLECTION_RATE -- 当期收缴率 +,PR_COLLECTION_RATE AS PR_COLLECTION_RATE -- 往期收缴率 +,COLLECTION_RATE AS COLLECTION_RATE -- 综合收缴率 +,PR_OWED_AMT AS PR_OWED_AMT -- 往期欠费金额(单位:万) +,CU_OWED_AMT AS CU_OWED_AMT -- 当期欠费金额(单位:万) +,ENERGY_CONSUMPTION_AMT AS ENERGY_CONSUMPTION_AMT -- 能耗收费 +,DEVICE_GOOD_RATE AS DEVICE_GOOD_RATE -- 设备完好率 +,DEVICE_SPACE_NORMAL_RATE AS DEVICE_SPACE_NORMAL_RATE -- 设备空间巡查完成率 +,NEC AS NEC -- 在职人数 +,FMR AS FMR -- 满编率 +,FMR_TARGET AS FMR_TARGET -- 满编率目标值 +,TR AS TR -- 离职率 +,TR_TARGET AS TR_TARGET -- 离职率目标值 +,AC_FEE_RATE AS AC_FEE_RATE -- 人力成本费率 +,AC_FEE_RATE_TARGET AS AC_FEE_RATE_TARGET -- 人力成本费率目标值 +,ASSESSMENT_OCCUPANY_RATE AS ASSESSMENT_OCCUPANY_RATE -- 空间运营出租率 +,RETAIL_FINISH_RATE AS RETAIL_FINISH_RATE -- 新零售完成率 +,RENT_RATE AS RENT_RATE -- 商业资产出租率 +,RENT_COLLECTION_RATE AS RENT_COLLECTION_RATE -- 租金收缴率 +,GUEST_ROOM_FEE AS GUEST_ROOM_FEE -- 客房单价(单位:元) +,GUEST_RENT_RATE AS GUEST_RENT_RATE -- 客房出租率 +,ROW_NUMBER() OVER (ORDER BY id DESC) AS rn +FROM dw.dws_president_base_index_d +)T +WHERE rn = 1 \ No newline at end of file From e82bfcf9af8ba89c910f5a04b51697086807cc6c Mon Sep 17 00:00:00 2001 From: yangkunan Date: Mon, 12 Aug 2024 17:19:41 +0800 Subject: [PATCH 53/89] =?UTF-8?q?=E6=80=BB=E8=A3=81=E5=AF=B9=E5=A4=96?= =?UTF-8?q?=E5=A4=A7=E5=B1=8F=E5=9C=B0=E5=9B=BE=E6=8C=87=E6=A0=87=E5=8F=96?= =?UTF-8?q?=E5=80=BC=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- finereport/kanban/pc/总裁驾驶舱对外大屏数据集.sql | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/finereport/kanban/pc/总裁驾驶舱对外大屏数据集.sql b/finereport/kanban/pc/总裁驾驶舱对外大屏数据集.sql index db91875..849e476 100644 --- a/finereport/kanban/pc/总裁驾驶舱对外大屏数据集.sql +++ b/finereport/kanban/pc/总裁驾驶舱对外大屏数据集.sql @@ -695,7 +695,7 @@ CREATE TABLE IF NOT EXISTS dw.dws_president_map_d ( ; -TRUNCATE TABLE dw.dws_president_map_d +TRUNCATE TABLE dw.dws_president_map_d; DELETE FROM dw.dws_president_map_d WHERE CURRENT_DT = '2024-08-02'; INSERT INTO dw.dws_president_map_d @@ -705,17 +705,17 @@ current_date() AS CURRENT_DT -- 当前日期 ,a.City AS CITY -- 城市 ,a.County AS COUNTY -- 县 ,round(sum(a.ContractArea) / 10000,2) AS TREATY_AREA -- 合约面积(万m²) -,sum(a.ManageContractArea) / 10000 AS MANAGE_AREA -- 在管面积(万m²) +,round(sum(a.TakeOverArea) / 10000,2) AS MANAGE_AREA -- 在管面积(万m²) ,sum(c.room_num) AS ROOM_NUM -- 总户数(户) ,count(*) AS COMM_NUM -- 在管项目数 -FROM dim_project_base_info_d a +FROM dw.dim_project_base_info_d a inner join (select distinct organ_code, organ_name, comm_id , comm_name from dim_organ_mapping where comm_id is not null and comm_name not like '%撤场%' and comm_name not like '%案场%' and comm_name not like '%禁用%' and length(comm_id) != 0) b on a.CommId = b.comm_id left join ( select CommID, count(*) room_num - from dim_room_d + from dw.dim_room_d group by CommID ) c on a.CommId = c.CommID where 1=1 From 2ece6f578c80da7229480b12dde854e7d8b6a678 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Wed, 21 Aug 2024 09:59:05 +0800 Subject: [PATCH 54/89] =?UTF-8?q?=E6=B3=95=E5=8A=A1dws=E8=A1=A8=E6=9C=80?= =?UTF-8?q?=E6=96=B0=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 4 ++ dw/dws/dws_law_tran_coll_d.sql | 98 +++++++++++++++++++++++++++++----- finereport/kanban/pc/法务.sql | 35 ++++++++++++ 3 files changed, 123 insertions(+), 14 deletions(-) diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index d31dbf8..4809418 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -13,6 +13,8 @@ + + @@ -20,6 +22,7 @@ + @@ -27,6 +30,7 @@ + diff --git a/dw/dws/dws_law_tran_coll_d.sql b/dw/dws/dws_law_tran_coll_d.sql index 0d3658b..01fb28d 100644 --- a/dw/dws/dws_law_tran_coll_d.sql +++ b/dw/dws/dws_law_tran_coll_d.sql @@ -3,20 +3,90 @@ select , case when project_name like '%撤场%' then '撤场' else '在管' end is_in_manage , case when a.status_id in (5,6) then '诉讼' when a.status_id in (4,7) then '非诉' - else c.case_type end is_lawsuit - , sum(a.owed_amt) trans_amt + else ifnull(c.case_type,b.case_type) end is_lawsuit + , sum(a.trans_amt) trans_amt , count(distinct a.belong_resource) trans_household_num - , sum(d.payment_coll_amt) payment_coll_amt - , count(distinct d.belong_resource) payment_coll_num + , 0 payment_coll_amt + , 0 payment_coll_num , b.apply_date ymd - , sum(datediff(ifnull(str_to_date(c.wjsj,'%Y-%m-%d'),current_date()),str_to_date(b.apply_date,'%Y-%m-%d'))) trans_duration -from (select * from dwd_law_owed_info_d where status_id in (0,4,5,6,7,8,9,10)) a - left join (select trans_payment, apply_date from dwd_law_trans_record_d) b + , datediff(ifnull(str_to_date(c.wjsj,'%Y-%m-%d'),current_date()),str_to_date(b.apply_date,'%Y-%m-%d')) trans_duration + , a.collect_unit + , a.acct_age +from ( + select a.* + , zl acct_age -- 给所属资源打上账龄 + from dwd_law_owed_info_d a + left join ( + /*取高层物业费或者车位物业费作为账龄的标记*/ + select * + from ( + select belong_resource , cost_name , count(*) zl + , row_number() over (partition by belong_resource order by if(cost_name = '高层物业服务费',1,if(cost_name = '车位物业服务费',2,9)) asc) rn + from dwd_law_owed_info_d + where status_id in (6,7,8,9,10,11) + group by belong_resource , cost_name + ) a where rn = 1 + ) b + on a.belong_resource = b.belong_resource + where status_id in (6,7,8,9,10,11) + ) a + left join ( + select a.trans_payment, a.apply_date, b.return_date , case when a.trans_type = 0 then '诉讼' else '非诉' end case_type + from dwd_law_trans_record_d a + left join dwd_law_trans_return_record_d b + on a.trans_payment = b.owed_payment + where str_to_date(a.apply_date,'%Y-%m-%d') > ifnull(date_format(b.return_date,'%Y-%m-%d'),'2000-01-01') +) b on a.id = b.trans_payment - left join (select id, belong_resource, case_type, wjsj from dwd_law_case_info_d where status not in('作废','草稿') and belong_resource != '108926') c - on a.belong_resource = c.belong_resource - left join (select payment_coll_date, case_name, payment_coll_amt, belong_resource from dwd_law_payment_collection_d) d - on c.id = d.case_name - left join (select distinct organ_code, organ_name, comm_id, comm_name from dim_organ_mapping) e - on a.project_code = e.comm_id -group by 1,2,3,4,5,6,11 \ No newline at end of file + left join ( + select * from ( + select + a.case_type + , a.wjsj + , b.owed_id + , a.collect_unit + , row_number() over (partition by owed_id order by if(status in ('草稿','作废'),1,0) asc) rn + from dwd_law_case_info_d a + left join dwd_law_case_detail_d b + on a.id = b.case_id + ) a + where rn = 1 +) c + on a.id = c.owed_id + inner join (select distinct organ_code, organ_name, comm_id, comm_name from dim_organ_mapping) e + on a.project_code = e.comm_id +group by 1,2,3,4,5,6,11,12,13,14 +union all +select + a.district_code organ_code + , a.district_name organ_name + , a.project_code comm_id + , a.project_name comm_name + , case when a.project_name like '%撤场%' then '撤场' else '在管' end is_in_manage + , b.case_type is_lawsuit + , 0, 0 + , sum(a.payment_coll_amt) payment_coll_amt + , sum(case when a.rn =1 then 1 else 0 end) payment_coll_num + , a.apply_date ymd + , null + , b.collect_unit + , a.acct_age +from ( + select a.*, b.zl acct_age, row_number() over (partition by district_code, a.belong_resource order by a.apply_date asc) rn + from dwd_law_payment_collection_d a + left join ( + /*取高层物业费或者车位物业费作为账龄的标记*/ + select * + from ( + select belong_resource , cost_name , count(*) zl + , row_number() over (partition by belong_resource order by if(cost_name = '高层物业服务费',1,if(cost_name = '车位物业服务费',2,9)) asc) rn + from dwd_law_owed_info_d + where status_id in (6,7,8,9,10,11) + group by belong_resource , cost_name + ) a where rn = 1 + ) b + on a.belong_resource = b.belong_resource + ) a + left join dwd_law_case_info_d b + on a.case_name = b.id +group by 1,2,3,4,5,6,11,13,14 \ No newline at end of file diff --git a/finereport/kanban/pc/法务.sql b/finereport/kanban/pc/法务.sql index e69de29..af244aa 100644 --- a/finereport/kanban/pc/法务.sql +++ b/finereport/kanban/pc/法务.sql @@ -0,0 +1,35 @@ +-- 【指标卡】 + + +SELECT + SUM(IFNULL(trans_household_num,0)) AS 移交户数, + SUM(IFNULL(trans_amt,0))/10000 AS 移交金额, + SUM(IFNULL(payment_coll_num,0)) AS 解决户数, + SUM(IFNULL(payment_coll_amt,0))/10000 AS 解决金额, + (SUM(IFNULL(trans_amt,0)) - SUM(IFNULL(payment_coll_amt,0)))/10000 AS 未解决金额, + SUM(IFNULL(trans_household_num,0)) - SUM(IFNULL(payment_coll_num,0)) AS 未解决户数, + SUM(IFNULL(payment_coll_amt,0)) / SUM(IFNULL(trans_amt,0)) AS 回款解决率, + SUM(IFNULL(payment_coll_num,0)) / SUM(IFNULL(trans_household_num,0)) AS 销户率 +FROM dw.dws_law_tran_coll_d +WHERE left(ymd,7) = '2024-08' + WHERE left(ymd,7) <= '${p_ym}%' +${IF(LEN(p_area)!=0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +${if(left(fine_role,2)=="项目","and comm_name = '"+G +ETUSERDEPARTMENTS(3)+"'","")} + + +-- 【未移交款项】 + + +SELECT + ${IF(LEN(p_area)>0,"project_name","district_name")} AS 分析维度, + SUM(IFNULL(owed_amt,0))/10000 AS 未决账款总额, + SUM(IFNULL(morethan_24m_not_trans_amt,0))/10000 AS 往期欠费账龄24月以上未移交账款金额, + SUM(IFNULL(owed_num,0)) AS 未决账款户数, + SUM(IFNULL(morethan_24m_not_trans_num,0)) AS 往期欠费账龄24月以上未移交户数 +FROM dws_law_not_tran_payment_m +WHERE 1=1 + ${IF(LEN(p_area)!=0," AND district_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and project_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +GROUP BY 分析维度 +order by 未决账款总额 desc \ No newline at end of file From 2a3c4e8e454a392ac4d2d4ad100bf258b46df076 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Thu, 22 Aug 2024 15:41:08 +0800 Subject: [PATCH 55/89] =?UTF-8?q?=E5=A4=9A=E7=BB=8F=E5=90=88=E5=90=8C?= =?UTF-8?q?=E5=88=B0=E6=9C=9F=E6=83=85=E5=86=B5=E6=98=8E=E7=BB=86=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 1 + dw/dwd/dwd_law_owed_info_d.sql | 5 +- .../6_innovation/5_多经合同到期情况.sql | 109 ++++++++++++++++++ 3 files changed, 114 insertions(+), 1 deletion(-) diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 4809418..af24d12 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -39,6 +39,7 @@ + diff --git a/dw/dwd/dwd_law_owed_info_d.sql b/dw/dwd/dwd_law_owed_info_d.sql index 264d385..bfea181 100644 --- a/dw/dwd/dwd_law_owed_info_d.sql +++ b/dw/dwd/dwd_law_owed_info_d.sql @@ -34,4 +34,7 @@ on a.ssxm = b.id left join (select id, left(pqbm,4) pqbm from ods_oa_uf_wy_pq_d where length(pqbm)=6) c -- 地区 on a.sspq = c.id left join (select pqbm, pqmc from ods_oa_uf_wy_pq_d where length(pqbm)=4) d -- 片区 -on c.pqbm = d.pqbm \ No newline at end of file +on c.pqbm = d.pqbm +-- SELECT count(DISTINCT sszy) from ods_oa_uf_wy_qf_d where zt IN('6','7','8','9','10','11') And fyrq <= '2024-08-20' + +-- SELECT COUNT(DISTINCT belong_resource) FROM dwd_law_owed_info_d where status_id IN('6','7','8','9','10','11') \ No newline at end of file diff --git a/finereport/xiazuan/6_innovation/5_多经合同到期情况.sql b/finereport/xiazuan/6_innovation/5_多经合同到期情况.sql index e69de29..35836ed 100644 --- a/finereport/xiazuan/6_innovation/5_多经合同到期情况.sql +++ b/finereport/xiazuan/6_innovation/5_多经合同到期情况.sql @@ -0,0 +1,109 @@ +-- ***************************** +-- 创建人员: 杨坤安 +-- 创建时间: 2024-08-21 +-- 功能描述: 多径合同到期表填报表 +-- ***************************** + + + +DROP TABLE IF EXISTS dw.ods_divfmanage_contract_d; +CREATE TABLE IF NOT EXISTS dw.ods_divfmanage_contract_d ( + id VARCHAR(100) PRIMARY KEY + ,CommID VARCHAR(100) COMMENT '项目ID' + ,comm_name VARCHAR(100) COMMENT '项目名称' + ,OrganCode VARCHAR(100) COMMENT '片区ID' + ,organ_name VARCHAR(100) COMMENT '片区名称' + ,ContractCategory VARCHAR(100) COMMENT '合同类型' + ,ContractName VARCHAR(100) COMMENT '合同名称' + ,BuyerConnectpeople VARCHAR(100) COMMENT '商家名称-乙方' + ,ContractBeginTime VARCHAR(100) COMMENT '合同开始时间' + ,ContractEndTime VARCHAR(100) COMMENT '合同结束时间' + ,ContractTotalPrice DECIMAL(12,6) COMMENT '合同金额' + ,is_renew VARCHAR(100) COMMENT '是否续签' +)COMMENT = '多径合同到期表填报表' +; + + +SELECT count(1) from dw.ods_divfmanage_contract_d +where is_renew = '1'; + +SELECT + * +FROM dw.ods_divfmanage_contract_d +where is_renew = '1' ; + +SELECT +* +FROM dw.ods_divfmanage_contract_d +ORDER BY ContractEndTime; + + TRUNCATE TABLE dw.ods_divfmanage_contract_d; + +INSERT INTO ods_divfmanage_contract_d +SELECT + a.id as id + ,A.CommID AS CommID -- 项目ID + ,B.comm_name AS comm_name -- 项目名称 + ,B.organ_code AS OrganCode -- 片区ID + ,B.organ_name AS organ_name -- 片区名称 + ,A.ContractCategory AS ContractCategory -- 合同类型 + ,A.ContractName AS ContractName -- 合同名称 + ,A.BuyerConnectpeople AS BuyerConnectpeople -- 商家名称-乙方 + ,A.ContractBeginTime AS ContractBeginTime -- 合同开始时间 + ,A.ContractEndTime AS ContractEndTime -- 合同结束时间 + ,A.ContractTotalPrice AS ContractTotalPrice -- 合同金额 + ,'0' AS is_renew -- 是否续签 +FROM + ( + SELECT + id + ,CommID -- 项目ID + ,OrganCode -- 片区ID + ,ContractCategory -- 合同类型 + ,ContractName -- 合同名称 + ,BuyerConnectpeople -- 商家名称-乙方 + ,ContractBeginTime -- 合同开始时间 + ,ContractEndTime -- 合同结束时间 + ,ContractTotalPrice -- 合同金额 + FROM dw.ods_erp_tb_divfmanage_contract_d + WHERE IFNULL(IsDelete, 0) = 0 + AND IFNULL (AuditStatus, '') = '已审核' + AND IFNULL (ContractChangeType, '') <> '终止' + AND ContractEndTime >= CURDATE() + AND datediff(ContractEndTime,CURDATE()) BETWEEN 0 AND 90 + )A + JOIN + ( + SELECT + DISTINCT + organ_code -- erp片区id + ,organ_name -- erp片区名称 + ,comm_id -- erp项目id + ,comm_name -- erp项目名称 + FROM dw.dim_organ_mapping -- 组织结构映射维度表 + WHERE comm_id IS NOT NULL + )B + ON A.CommID = B.comm_id +; + + + +-- 【数据集】 +SELECT + id + ,CommID -- 项目ID + ,comm_name -- 项目名称 + ,OrganCode -- 片区ID + ,organ_name -- 片区名称 + ,ContractCategory -- 合同类型 + ,ContractName -- 合同名称 + ,BuyerConnectpeople -- 商家名称-乙方 + ,substr(ContractBeginTime,1,10) AS ContractBeginTime -- 合同开始时间 + ,substr(ContractEndTime,1,10) AS ContractEndTime -- 合同结束时间 + ,ContractTotalPrice -- 合同金额 + ,is_renew -- 是否续签 +FROM dw.ods_divfmanage_contract_d +WHERE is_renew = '0' +${IF(LEN(p_area)!=0," and OrganCode IN ('"+JOINARRAY(p_area,"','")+"')","")} +${IF(LEN(p_shop)!=0," and CommID IN ('"+JOINARRAY(p_shop,"','")+"')","")} +${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} \ No newline at end of file From bcaf4a6084ea37aa9c4053af91004d395e764a18 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 3 Sep 2024 18:37:53 +0800 Subject: [PATCH 56/89] =?UTF-8?q?=E5=B7=A5=E7=A8=8B=E5=8D=95=E4=BD=8D?= =?UTF-8?q?=E9=9D=A2=E7=A7=AF=E8=83=BD=E8=80=97=E5=90=8C=E7=8E=AF=E6=AF=94?= =?UTF-8?q?=E3=80=81=E9=A1=B9=E7=9B=AE=E6=98=8E=E7=BB=86=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 3 + finereport/kanban/mobile/工程_mobile.sql | 56 ++ finereport/kanban/mobile/物业_mobile.sql | 904 +++++++++++++++++- finereport/kanban/pc/工程.sql | 94 ++ .../3_property/1_各项目客户满意度得分.sql | 42 + .../xiazuan/2_operation/项目明细弹窗.sql | 330 +++++-- 6 files changed, 1340 insertions(+), 89 deletions(-) create mode 100644 finereport/tianbao/3_property/1_各项目客户满意度得分.sql diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index af24d12..65b33a7 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -22,6 +22,8 @@ + + @@ -31,6 +33,7 @@ + diff --git a/finereport/kanban/mobile/工程_mobile.sql b/finereport/kanban/mobile/工程_mobile.sql index e69de29..32c706f 100644 --- a/finereport/kanban/mobile/工程_mobile.sql +++ b/finereport/kanban/mobile/工程_mobile.sql @@ -0,0 +1,56 @@ +-- 【单位面积能耗同环比】 + +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 + ${IF(p_type = "环比","/*","")} + 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(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + ${IF(LEN(p_ym)>0," AND right(list_ym,2) ='" +right(p_ym,2) + "'","")} + and MeterType in ('水表','电表') + order by list_ym asc + ${IF(p_type = "环比","*/","")} + + ${IF(p_type = "环比","","/*")} + 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,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + ORDER BY list_ym ASC + ${IF(p_type = "环比","","*/")} + )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 +ORDER BY A.list_ym,A.MeterType +; \ No newline at end of file diff --git a/finereport/kanban/mobile/物业_mobile.sql b/finereport/kanban/mobile/物业_mobile.sql index fd788a9..a609d42 100644 --- a/finereport/kanban/mobile/物业_mobile.sql +++ b/finereport/kanban/mobile/物业_mobile.sql @@ -41,4 +41,906 @@ Text2:需要比较的第二组文本。 示例: EXACT("Spreadsheet","Spreadsheet")等于TRUE。 EXACT("Spreadsheet","S preadsheet")等于FALSE。 -EXACT("Spreadsheet","spreadsheet")等于FALSE。 \ No newline at end of file +EXACT("Spreadsheet","spreadsheet")等于FALSE。 + +-- 【客满得分汇总】 + +select + yr, + t_quarter, + organ_code, + organ_name, + index_myd_target, + index_mydf, + index_mydf / index_myd_target myd_complete_rate +select * from ods_wuye_complaint_half_year +where 1=1 and yr = '2024' and t_quarter = '二季度' +${if(len(organ)=0,"and organ_code = '0000'","and organ_code = '"+organ+"'")} + + + + + +-- 【report_各片区得分】 + + WITH T1 AS (/*各片区得分目标*/ +SELECT DISTINCT + organ_code, + organ_name, + organ_target +FROM ods_wuye_satisfaction_target +WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target > 0 +),T2 AS (/*各片区得分情况*/ +SELECT DISTINCT + organ_code, + organ_name, + index_mydf, + IFNULL(index_wl_yxybl,0) + IFNULL(index_mwl_yxybl,0) AS 样本量, + IFNULL(index_wl_myl,0) + IFNULL(index_mwl_myl,0) AS 满意量 +FROM ods_wuye_complaint_half_year +WHERE yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' +) +SELECT + ROW_NUMBER() OVER (ORDER BY T2.index_mydf DESC) AS 序号, + T1.organ_code, + T1.organ_name, + T1.organ_target AS 目标, + T2.index_mydf AS 满意度得分, + T2.样本量, + T2.满意量 +FROM T1 LEFT JOIN T2 ON T1.organ_code = T2.organ_code +WHERE T1.organ_target IS NOT NULL + ${if(left(fine_role,6)!="领悦集团总部","and T1.organ_name = '"+GETUSERDEPARTMENTS(2)+"'","")} +ORDER BY 满意度得分 DESC +; + + +-- 不选片区展示总得分 +${IF(OR(LEN(p_area)>0,left(fine_role,2)=="项目"),"/*", "")} +select + ifnull(index_mydf,'-') as index_mydf + ,IFNULL((index_mydf / index_myd_target),'-') as myd_complete_rate +from ods_wuye_complaint_half_year +where 1=1 +and yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' +AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' +and organ_code = '0000' +${IF(OR(LEN(p_area)>0,left(fine_role,2)=="项目"),"*/", "")} + +-- 选择片区显示片区得分 选择多个片区只会返回得分最高的片区 +${IF(AND(LEN(p_area)>0,left(fine_role,2)!="项目"),"", "/*")} +select + ifnull(index_mydf,'-') as index_mydf + ,IFNULL((index_mydf / index_myd_target),'-') as myd_complete_rate +from ods_wuye_complaint_half_year +where 1=1 +and yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' +AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' +${IF(LEN(p_area)>0,"AND organ_code IN('"+JOINARRAY(p_area,"','")+"')", "")} -- 如果选择的片区 筛选片区的数据 +${if(left(fine_role,6)!="领悦集团总部","and organ_name = '"+GETUSERDEPARTMENTS(2)+"'","")} +ORDER BY index_mydf desc +${IF(AND(LEN(p_area)>0,left(fine_role,2)!="项目"),"", "*/")} +-- 如果是项目负责人 需显示项目得分情况 +${IF(left(fine_role,2)=="项目","", "/*")} +WITH T3 AS ( + -- 各项目目标 + SELECT + comm_name + ,comm_id + ,comm_target -- 目标 + FROM ods_wuye_satisfaction_target -- 年度维护目标表 包含片区项目的目标值 + WHERE yr = '${LEFT(p_ym,4)}' + AND comm_type = '内盘' + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} -- 如果选择的片区 筛选片区的数据 + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +), +T4 AS ( + -- 各项目得分 + SELECT + comm_name + ,comm_id + ,index_dc_myddf -- 得分 + FROM ods_wuye_complaint + WHERE yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +) +SELECT +IFNULL(T4.index_dc_myddf,'-') as index_dc_myddf -- 得分 +,IFNULL((T4.index_dc_myddf / T3.comm_target),'-') AS index_dc_myddf_rate -- 得分完成率 +FROM T3 +LEFT JOIN T4 +ON T3.comm_id = T4.comm_id +ORDER BY T4.index_dc_myddf DESC +${IF(left(fine_role,2)=="项目","", "*/")} + + + +-- 【片区项目投诉】 + + + +SELECT + ROW_NUMBER() OVER (ORDER BY tousu_incident_num ASC) AS 序号 + -- ,a.p_area as p_area + ,REPLACE(REPLACE(a.p_area,'片区', ''),'公司','') AS p_area + ,a.incident_ym as incident_ym + ,a.tousu_close_incident_num as tousu_close_incident_num +from +( + select + ${if(len(p_area) == 0,"organ_name","comm_name")} as p_area + , incident_ym + , SUM(IFNULL(tousu_incident_num,0)) AS tousu_incident_num + , SUM(IFNULL(tousu_close_incident_num,0)) AS tousu_close_incident_num + FROM dws_estate_incident_info_m + where incident_ym = '${REPLACE(p_ym,"-","")}' + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + ${IF(LEN(p_area)>0," and organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + GROUP BY ${if(len(p_area) == 0,"organ_name","comm_name")},incident_ym + having SUM(IFNULL(tousu_incident_num,0)) != 0 +)a +ORDER BY tousu_incident_num ASC + +-- 【片区项目投诉_倒数】 + + + +select + t.* +from + ( + SELECT + ROW_NUMBER() OVER (ORDER BY tousu_incident_num ASC) AS rk + -- ,a.p_area as p_area + ,REPLACE(REPLACE(a.p_area,'片区', ''),'公司','') AS p_area + ,a.incident_ym as incident_ym + ,a.tousu_close_incident_num as tousu_close_incident_num + from( + select + ${if(len(p_area) == 0,"organ_name","comm_name")} as p_area + , incident_ym + , SUM(IFNULL(tousu_incident_num,0)) AS tousu_incident_num + , SUM(IFNULL(tousu_close_incident_num,0)) AS tousu_close_incident_num + FROM dws_estate_incident_info_m + where incident_ym = '${REPLACE(p_ym,"-","")}' + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + ${IF(LEN(p_area)>0," and organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + GROUP BY ${if(len(p_area) == 0,"organ_name","comm_name")},incident_ym + having SUM(IFNULL(tousu_incident_num,0)) != 0 + ) a + ORDER BY tousu_incident_num DESC + limit 3 + )t +order by rk + + +SELECT +REPLACE(REPLACE(t.p_area,'片区', ''),'公司','') AS p_area +,t.户数 AS 户数 +FROM +( + SELECT + ${if(len(p_area) == 0,"T1.organ_name","T1.comm_name")} as p_area + ,count(T2.RoomName) AS 户数 + FROM dim_organ_mapping T1 + INNER JOIN dim_room_d T2 + ON T1.comm_id = T2.CommID + ${IF(LEN(p_area)>0," where organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + GROUP BY ${if(len(p_area) == 0,"T1.organ_name","T1.comm_name")} +)t + + +-- 【report_当年客满得分情况_按月】 + + + + +/*有片区求各项目的内外盘得分、目标*/ +/*无片区求各片区的得分、目标*/ +WITH T1 AS ( + /*各片区得分目标*/ + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '1月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '2月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '3月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '4月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '5月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '6月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '7月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '8月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '9月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '10月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '11月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + organ_target AS 目标, + yr AS yr, -- 年 + '12月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + AND organ_target IS NOT NULL + ${IF(LEN(p_area)>0," AND 1=2", "")} + + ),T2 AS ( + /*各片区得分*/ + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '1月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '一季度' + AND yr = '${LEFT(p_ym,4)}' +-- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '1月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '一季度' + AND yr = '${LEFT(p_ym,4)}' +-- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '2月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '一季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '3月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '一季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '4月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '二季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '5月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '二季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '6月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '二季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '7月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '三季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '8月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '三季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '9月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '三季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '10月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '四季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '11月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '四季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + UNION ALL + SELECT + DISTINCT + organ_name AS 维度, + SUM(IFNULL(index_mydf,0)) AS 得分, + '12月' AS m -- 月 + FROM ods_wuye_complaint_half_year + WHERE t_quarter = '四季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0," AND 1=2", "")} + GROUP BY organ_name + + ),T3 AS ( + /*各项目目标*/ + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '1月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '2月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '3月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '4月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '5月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '6月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '7月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '8月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '9月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '10月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '11月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + comm_target AS 目标, + yr, + '12月' AS m -- 月 + FROM ods_wuye_satisfaction_target + WHERE yr = '${LEFT(p_ym,4)}' + ${IF(p_type = "内盘","AND comm_type = '内盘'", "AND comm_type = '外盘'")} + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + AND comm_target IS NOT NULL + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0,"", "AND 1=2")} + + ),T4 AS ( + /*各项目得分*/ + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '1月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '一季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '2月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '一季度' + AND yr = '${LEFT(p_ym,4)}' +-- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '3月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '一季度' + AND yr = '${LEFT(p_ym,4)}' +-- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '4月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '二季度' + AND yr = '${LEFT(p_ym,4)}' +-- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '5月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '二季度' + AND yr = '${LEFT(p_ym,4)}' +-- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '6月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '二季度' + AND yr = '${LEFT(p_ym,4)}' +-- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '7月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '三季度' + AND yr = '${LEFT(p_ym,4)}' +-- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '8月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '三季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '9月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '三季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '10月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '四季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '11月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '四季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + UNION ALL + SELECT + comm_name AS 维度, + index_dc_myddf AS 得分, + yr, + '12月' AS m -- 月 + FROM ods_wuye_complaint + WHERE jd = '四季度' + AND yr = '${LEFT(p_ym,4)}' + -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' + -- AND jd = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' + ${IF(LEN(p_area)>0,"", "AND 1=2")} + ) +SELECT + A.维度, + A.目标, + B.得分, + A.m +FROM ${IF(LEN(p_area)>0,"T3 AS A", "T1 AS A")} +LEFT JOIN ${IF(LEN(p_area)>0,"T4 AS B", "T2 AS B")} +ON A.维度 = B.维度 +and A.m = B.m +-- and A.yr = B.yr +WHERE A.目标 > 0 + AND B.得分 > 0 + ${if(left(fine_role,2)=="项目","and A.维度 = '"+GETUSERDEPARTMENTS(3)+"'","")} + + + + + + + + + +-- 片区维度 +select +a.ym as ym -- 年月 +,a.organ_code as organ_code -- 片区ID +,a.organ_name as organ_name -- 片区名称 +,if(b.index_dq_target =0,0,a.cu_collection_rate / b.index_dq_target) as cu_coll_complete_rate -- 物业费当期收缴率 +,if(b.index_wq_target = 0,0,a.pr_collection_rate / b.index_wq_target) as pr_coll_complete_rate -- 物业费往期收缴率 +,a.collection_rate as collection_rate-- 物业费收缴率 +from +( + SELECT + + ym + ,organ_code + ,organ_name + ,sum(ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0)) / sum(ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0)) cu_collection_rate + ,sum((- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum(ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0)) pr_collection_rate + ,sum(ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0)+(- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum(ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0)+ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0)) collection_rate + from dwd_finance_fees_serial_d + where ParentCostCode = '0001' + -- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + -- ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_ym)>0," AND ym ='" + p_ym+ "'","")} + -- ${IF(LEN(p_area)>0,"group by organ_code, ym","group by ym")} + GROUP BY + ym + ,organ_code + ,organ_name +)a +left join +( + select + organ_code + ,organ_name + ,ym + ,index_dq_target -- 当期目标 + ,index_wq_target -- 往期目标 + from ods_finance_collection_target_area + -- ${IF(LEN(p_area)==0,"where organ_code = '5501'","")} + +)b +on a.ym = b.ym +AND a.organ_code = b.organ_code +-- ${IF(LEN(p_area)>0,"a.organ_code = b.organ_code and a.ym = b.ym", "a.ym = b.ym")} \ No newline at end of file diff --git a/finereport/kanban/pc/工程.sql b/finereport/kanban/pc/工程.sql index a062b25..65facee 100644 --- a/finereport/kanban/pc/工程.sql +++ b/finereport/kanban/pc/工程.sql @@ -319,4 +319,98 @@ FROM 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 ; \ No newline at end of file diff --git a/finereport/tianbao/3_property/1_各项目客户满意度得分.sql b/finereport/tianbao/3_property/1_各项目客户满意度得分.sql new file mode 100644 index 0000000..89e9201 --- /dev/null +++ b/finereport/tianbao/3_property/1_各项目客户满意度得分.sql @@ -0,0 +1,42 @@ +-- 【ds1】 + +SELECT + organ_name, + comm_name, + cycle, + index_myd_target AS 满意度目标, + index_dc_myddf AS 满意度得分, + index_dc_ybl AS 地产有效样本量, + index_dc_myl AS 地产满意量, + index_dc_myd AS 稳老综合满意度, + index_dc_qz AS 权重20, + index_wy_ybl AS 物业有效样本量, + index_wy_myl AS 物业满意量, + index_wy_myd AS 磨稳老物业满意度, + index_wy_qz AS 权重80 +FROM dw.ods_wuye_complaint +WHERE yr = '2024' + AND jd = '二季度' + AND ptype = '内盘' +; + + +SELECT + organ_name, + comm_name, + cycle, + index_myd_target AS 满意度目标, + index_dc_myddf AS 满意度得分, + index_dc_ybl AS 地产有效样本量, + index_dc_myl AS 地产满意量, + index_dc_myd AS 稳老综合满意度, + index_dc_qz AS 权重20, + index_wy_ybl AS 物业有效样本量, + index_wy_myl AS 物业满意量, + index_wy_myd AS 磨稳老物业满意度, + index_wy_qz AS 权重80 +FROM ods_wuye_complaint +WHERE yr = '${p_yr}' + AND jd = '${p_jd}' + AND ptype = '${p_type}' +; \ No newline at end of file diff --git a/finereport/xiazuan/2_operation/项目明细弹窗.sql b/finereport/xiazuan/2_operation/项目明细弹窗.sql index 4c0d7fe..8341526 100644 --- a/finereport/xiazuan/2_operation/项目明细弹窗.sql +++ b/finereport/xiazuan/2_operation/项目明细弹窗.sql @@ -5,100 +5,254 @@ -- 目 录: xianzuan>2_运营>项目明细弹窗.fvs -- **************************************** --- 【数据集: report_project】 --- 1. 财务 finance --- 2. 运营 operation --- 3. 物业 property --- 4. 工程 engine --- 5. 人力 5_manpower --- 6. 创新 6_innovation --- 7. 商业 7_business --- 8. 法务 8_legal -SELECT - -- ${if(len(p_area) == 0,"B.organ_name","B.comm_name")} as p_area - -- ,A.CommId AS CommId -- 项目id 可关联maping表 - -- ${if(len(p_area) == 0,",'-'",",A.ManageKindName")} as newManageKind - -- ,A.ManageKind AS ManageKind -- 管理性质 【项目归属】 - A.ManageKindName AS ManageKindName -- 管理性质名称 【项目归属】 - ,A.ContractArea / 10000 AS ContractArea -- 合同面积 【建筑面积】 - ,A.TakeOverArea / 10000 AS TakeOverArea -- 接管面积 【合约面积】 - ,A.ManageContractArea / 10000 AS ManageContractArea -- 管理口径合同面积 【在管面积】 - -- ${if(len(p_area) == 0,",'-'",",A.StateName")} as newStateName - ,A.StateName AS StateName -- 业态 【项目业态】 - ,C.room_num AS room_num -- 总户数 - -- ,A.Province AS Province -- 省 - -- ,A.City AS City -- 市 - -- ,A.County AS County -- 区 - ,B.organ_code AS organ_code -- erp片区id - ,B.organ_name AS organ_name -- erp片区名称 - -- ,B.comm_id AS -- erp项目id - ,B.comm_name AS comm_name -- erp项目名称 + +SELECT-- ${if(len(p_area) == 0,"B.organ_name","B.comm_name")} as p_area +-- ,A.CommId AS CommId -- 项目id 可关联maping表 +-- ${if(len(p_area) == 0,",'-'",",A.ManageKindName")} as newManageKind +-- ,A.ManageKind AS ManageKind -- 管理性质 【项目归属】 + A.ManageKindName AS ManageKindName -- 管理性质名称 【项目归属】 + , + A.Province, + A.City, + A.Citylevel, -- 城市级别 + A.ManageStage, -- 项目状态 + A.TakeOverTime, -- 交付时间 + A.CommFrom, -- 项目来源 + A.DevSubject, -- 项目开发商名称 + A.CommAddress, -- 项目地址 + CASE WHEN ProjectFloorPlan IS NULL OR JSON_EXTRACT(JSON_EXTRACT(cast(A.ProjectFloorPlan as JSON),'$[0]'),'$.FileName') IS NULL + THEN '否' + WHEN JSON_EXTRACT(JSON_EXTRACT(cast(A.ProjectFloorPlan as JSON),'$[0]'),'$.FileName') IS NOT NULL + THEN '是' + END AS IS_UPLOAD, -- 是否有上传项目平面图 -- 项目平面图 + (A.FloorArea + A.UndergroundArea ) AS TotalArea, -- 建筑总面积 + A.FloorArea, -- 地上面积 + A.UndergroundArea, -- 地下面积 + A.GreenArea, -- 绿化面积 + A.ContractTerm, + A.PropertyMgrEntrustType, + CASE + WHEN A.IsContractFiled = '1' THEN '是' + ELSE '否' + END AS 是否办理合同备案 , + A.ProjectDeliverySituation, + A.UnsoldParkingCount, + IF(A.PedEntrExitsCount=0 OR PedEntrExitsCount IS NULL ,'-',PedEntrExitsCount)as PedEntrExitsCount, + IF(A.CarEntrExitsCount=0 OR CarEntrExitsCount IS NULL ,'-',CarEntrExitsCount)as CarEntrExitsCount, + IF(A.MixedEntrExitsCount=0 OR MixedEntrExitsCount IS NULL ,'-',MixedEntrExitsCount)as MixedEntrExitsCount, + IF(A.GuardedEntrExitsCount=0 OR GuardedEntrExitsCount IS NULL ,'-',GuardedEntrExitsCount)as GuardedEntrExitsCount, + IF(A.MonitoringRoomCount=0 OR MonitoringRoomCount IS NULL ,'-',MonitoringRoomCount)as MonitoringRoomCount, + A.IsMonRoomMergedToGate, + A.ContractArea , -- 合同面积 【建筑面积】 + A.TakeOverArea , -- 接管面积 【合约面积】 + A.ManageContractArea ManageContractArea, -- 管理口径合同面积 【在管面积】 +-- ${if(len(p_area) == 0,",'-'",",A.StateName")} as newStateName + A.StateName AS StateName, -- 业态 【项目业态】 + A.ContractName, -- 合同类型 + A.GetMethod, -- 项目获取渠道 + A.ContractPartyName, -- 合同对方名称 + CASE + WHEN A.IsSetCommittee = '1' THEN '是' + ELSE '否' + END AS 是否成立委员会 , -- 是否已成立业主委员会 + A.CommitteeTime, -- 业委会成立时间 + A.ChargeMode, + CONCAT( + DATE_FORMAT(CommitteeTermEndDate, '%Y-%m-%d'), + ' 至 ', + DATE_FORMAT(CommitteeTermStartDate, '%Y-%m-%d') + ) AS 任职天数, -- 任职时间 + C.room_num AS room_num ,-- 总户数 +-- ,A.Province AS Province -- 省 +-- ,A.City AS City -- 市 +-- ,A.County AS County -- 区 + B.organ_code AS organ_code, -- erp片区id + B.organ_name AS organ_name, -- erp片区名称 +-- ,B.comm_id AS -- erp项目id + B.comm_name AS comm_name, -- erp项目名称 + D.`已售面积`, + D.`未售面积` , + E.`已售车位`, + F.`已交付户数`, + F.`已接房数`, + F.`正在装修户数`, + F.`已完成装修户数`, + F.`已完成装修未入住`, + F.`已完成装修已入住`,( + F.`已完成装修已入住` / F.`已交付户数` + ) AS 入住率,( + F.`已完成装修户数` / F.`已交付户数` + ) AS 装修率, + G.收费面积, -- 收费面积 + H.签约时间, + I.住宅高层, + I.住宅多层, + I.别墅, + I.联排物业服务费, + I.叠拼物业服务费, + I.洋房物业费, + I.公寓物业服务费, + I.商铺物业服务费, + I.写字楼物业服务费, + I.幼儿园物业服务费, + I.厂区物业服务费, + I.酒店物业服务费, + I.车位管理物业服务费, + I.车位月租费用 FROM - ( - select - CommId -- 项目id 可关联maping表 - ,ManageKind -- 管理性质 - ,ManageKindName -- 管理性质名称 - ,ContractArea -- 合同面积 合约面积 - ,ManageContractArea-- 管理口径合同面积 在管面积 - ,StateName -- 业态 项目业态 - ,TakeOverArea -- 接管面积 - ,Province -- 省 - ,City -- 市 - ,County -- 区 - from dw.dim_project_base_info_d -- 项目维度表 - )A - JOIN - ( + dw.dim_project_base_info_d A -- 项目维度表 + JOIN ( SELECT organ_code -- erp片区id - ,organ_name -- erp片区名称 - ,comm_id -- erp项目id - ,comm_name -- erp项目名称 - FROM dw.dim_organ_mapping -- 片区项目映射维度表 - where comm_id is not null and comm_name not like '%撤场%' and comm_name not like '%案场%' and comm_name not like '%禁用%' and length(comm_id) != 0 + , + organ_name -- erp片区名称 + , + comm_id -- erp项目id + , + comm_name -- erp项目名称 + + FROM + dw.dim_organ_mapping -- 片区项目映射维度表 + + WHERE + comm_id IS NOT NULL + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%禁用%' + AND length( comm_id ) != 0 GROUP BY organ_code -- erp片区id - ,organ_name -- erp片区名称 - ,comm_id -- erp项目id - ,comm_name -- erp项目名称 - )B - ON A.CommId = B.comm_id - LEFT JOIN - ( + , + organ_name -- erp片区名称 + , + comm_id -- erp项目id + , + comm_name -- erp项目名称 + + ) B ON A.CommId = B.comm_id + LEFT JOIN ( SELECT CommID, count( 1 ) AS room_num -- 项目对应房间数量 + FROM dw.dim_room_d GROUP BY CommID ) C ON A.CommId = C.CommID + LEFT JOIN ( SELECT - CommID - ,count(1) as room_num -- 项目对应房间数量 - FROM dw.dim_room_d + CommID, + SUM( CASE WHEN roomstate IN ( '1', '4', '9', '10', '5', '6' ) THEN buildarea ELSE 0 END ) AS 已售面积, + SUM( CASE WHEN roomstate = '2' THEN buildarea ELSE 0 END ) AS 未售面积 + FROM + dim_room_d GROUP BY CommID - )C - ON A.CommId = C.CommID - where 1 = 1 - ${IF(LEN(p_area)!=0," where t.organ_code IN ('"+JOINARRAY(p_area,"','")+"')","")} - - --- )t --- group by --- ${if(len(p_area) == 0,"t.organ_name","t.comm_name")} -- 片区/项目 --- -- ,t.organ_name -- erp片区名称 --- -- ,t.comm_name -- erp项目名称 --- ,${if(len(p_area) == 0,"'-'","t.ManageKindName")} -- 管理性质名称 --- ,${if(len(p_area) == 0,"'-'","t.StateName")} -- 业态 【项目业态】 -; - - - - - - --- 【筛选框数据集: dic_erp片区】 - - -SELECT DISTINCT - organ_code AS 片区id, - organ_name AS 片区名称 -FROM dim_organ_mapping -; - + ) D ON A.COMMID = D.COMMID + LEFT JOIN ( + SELECT + CommID, + SUM( CASE WHEN ParkingState IN ( '0001', '0003' ) THEN 1 ELSE 0 END ) AS 已售车位 + FROM + ods_erp_tb_hspr_parking_d + GROUP BY + CommID + ) E ON A.COMMID = E.COMMID + LEFT JOIN ( + SELECT + CommID, + SUM( CASE WHEN SaleState = '已售' THEN 1 ELSE 0 END ) AS 已交付户数, + SUM( CASE WHEN roomstate IN ( '4', '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS 已接房数, + SUM( CASE WHEN roomstate = '4' THEN 1 ELSE 0 END ) AS 正在装修户数, + SUM( CASE WHEN roomstate IN ( '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修户数, + SUM( CASE WHEN roomstate = '5' THEN 1 ELSE 0 END ) AS 已完成装修未入住, + SUM( CASE WHEN roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修已入住 + FROM + dim_room_d + GROUP BY + CommID + ) F ON A.COMMID = F.COMMID + LEFT JOIN ( SELECT + CommId, + SUM(CalcArea) AS 收费面积 + FROM dim_bind_cost_stan_detail_d + GROUP BY CommId ) G ON A.COMMID = G.COMMID + LEFT JOIN ( + SELECT commid,max(GetTime) AS 签约时间 FROM dim_project_base_info_d GROUP BY CommId + ) H ON A.COMMID = H.COMMID + LEFT JOIN ( + SELECT + A.CommId, + CASE + WHEN SUM(CASE WHEN B.CostName IN ('高层物业服务费', '电梯电费', '公共能耗费') THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName IN ('高层物业服务费', '电梯电费', '公共能耗费') THEN StanAmount ELSE 0 END) + END AS 住宅高层, + -- 住宅多层 + CASE + WHEN SUM(CASE WHEN B.CostName IN ('多层物业服务费', '公共能耗费') THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName IN ('多层物业服务费', '公共能耗费') THEN StanAmount ELSE 0 END) + END AS 住宅多层, + -- 别墅 + CASE + WHEN SUM(CASE WHEN B.CostName IN ('别墅物业服务费', '公共能耗费') THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName IN ('别墅物业服务费', '公共能耗费') THEN StanAmount ELSE 0 END) + END AS 别墅, + -- 联排物业服务费 + CASE + WHEN SUM(CASE WHEN B.CostName = '联排物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName = '联排物业服务费' THEN StanAmount ELSE 0 END) + END AS 联排物业服务费, + -- 叠拼物业服务费 + CASE + WHEN SUM(CASE WHEN B.CostName = '叠拼物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName = '叠拼物业服务费' THEN StanAmount ELSE 0 END) + END AS 叠拼物业服务费, + -- 洋房物业费 + CASE + WHEN SUM(CASE WHEN B.CostName = '洋房物业费' THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName = '洋房物业费' THEN StanAmount ELSE 0 END) + END AS 洋房物业费, + -- 公寓物业服务费 + CASE + WHEN SUM(CASE WHEN B.CostName = '公寓物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName = '公寓物业服务费' THEN StanAmount ELSE 0 END) + END AS 公寓物业服务费, + -- 商铺物业服务费 + CASE + WHEN SUM(CASE WHEN B.CostName = '商铺物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName = '商铺物业服务费' THEN StanAmount ELSE 0 END) + END AS 商铺物业服务费, + -- 写字楼物业服务费 + CASE + WHEN SUM(CASE WHEN B.CostName = '写字楼物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName = '写字楼物业服务费' THEN StanAmount ELSE 0 END) + END AS 写字楼物业服务费, + -- 幼儿园物业服务费 + CASE + WHEN SUM(CASE WHEN B.CostName = '幼儿园物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName = '幼儿园物业服务费' THEN StanAmount ELSE 0 END) + END AS 幼儿园物业服务费, + -- 厂区物业服务费 + CASE + WHEN SUM(CASE WHEN B.CostName = '厂区物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName = '厂区物业服务费' THEN StanAmount ELSE 0 END) + END AS 厂区物业服务费, + -- 酒店物业服务费 + CASE + WHEN SUM(CASE WHEN B.CostName = '酒店物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName = '酒店物业服务费' THEN StanAmount ELSE 0 END) + END AS 酒店物业服务费, + -- 车位管理物业服务费 + CASE + WHEN SUM(CASE WHEN B.CostName = '车位管理物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName = '车位管理物业服务费' THEN StanAmount ELSE 0 END) + END AS 车位管理物业服务费, + -- 车位月租费用 + CASE + WHEN SUM(CASE WHEN B.CostName = '车位月租' THEN StanAmount ELSE 0 END) = 0 THEN '-' + ELSE SUM(CASE WHEN B.CostName = '车位月租' THEN StanAmount ELSE 0 END) + END AS 车位月租费用 + FROM + dim_cost_stand_d A + LEFT JOIN + (SELECT distinct COMMID, COSTID,COSTNAME FROM dim_costitem_d) B ON A.CommID = B.COMMID AND A.CostID = B.COSTID + GROUP BY + A.CommId + ) I ON A.COMMID = I.COMMID +where 1 = 1 + ${IF(LEN(p_area)!=0," and B.organ_code IN ('"+p_area+"')","")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} \ No newline at end of file From c79c0ed6e6f01ff5d8bd76487182adf5e81ca06f Mon Sep 17 00:00:00 2001 From: yangkunan Date: Thu, 5 Sep 2024 09:02:49 +0800 Subject: [PATCH 57/89] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E4=BB=A3=E7=A0=81=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dw/dim/dim_project_base_info_d.sql | 127 ++++-- .../xiazuan/2_operation/项目明细弹窗.sql | 418 +++++++++--------- 2 files changed, 308 insertions(+), 237 deletions(-) diff --git a/dw/dim/dim_project_base_info_d.sql b/dw/dim/dim_project_base_info_d.sql index 68c9eff..1176e4a 100644 --- a/dw/dim/dim_project_base_info_d.sql +++ b/dw/dim/dim_project_base_info_d.sql @@ -1,26 +1,101 @@ -SELECT - c.CommId, - c.ManageKind, - case when c.ManageKind = '0001' then '项目内盘' - when c.ManageKind = '0002' then '项目外盘(全委)' - when c.ManageKind = '0003' then '项目外盘(合资)' - when c.ManageKind = '0004' then '案场内盘' - when c.ManageKind = '0005' then '案场外盘(全委)' - when c.ManageKind = '0006' then '案场外盘(合资)' - end ManageKindName, - I.ContractArea, - I.ManageContractArea, - COALESCE(( - SELECT SUM(COALESCE(TakeOverArea, 0)) - FROM ods_erp_tb_hspr_projecttakeoverdetail_d - WHERE IsDelete = 0 AND ParentId = I.ID - ), 0) AS TakeOverArea - , right(b.StateName,4) StateName - , b.Province - , b.City - , b.County -FROM ods_erp_tb_hspr_projecttakeoverinformation_d AS I - right join ods_erp_tb_hspr_projectbasicinfomation_d b - on i.ParentId = b.id - right join ods_erp_tb_hspr_community_d c - on b.CommId = c.CommId \ No newline at end of file +select + b.CommId + , case when b.CommKind = '0001' then '商住' + when b.CommKind = '0002' then '商办' + when b.CommKind = '0003' then '公建' + when b.CommKind = '0004' then '住宅' + when b.CommKind = '0005' then '商业' + when b.CommKind = '0006' then '酒店' + end StateName + , b.ManageKind + , case when b.ManageKind = '0001' then '项目内盘' + when b.ManageKind = '0002' then '项目外盘(全委)' + when b.ManageKind = '0003' then '项目外盘(合资)' + when b.ManageKind = '0004' then '案场内盘' + when b.ManageKind = '0005' then '案场外盘(全委)' + when b.ManageKind = '0006' then '案场外盘(合资)' + end ManageKindName + , b.Province + , b.City + , b.Borough County + , a.GetMethod + , a.GetTime + , a.ContractName + , a.FloorArea + , a.UndergroundArea + , a.GreenArea + , a.TakeOverArea + , a.ContractArea + , a.ManageContractArea + , a.ContractTerm + , a.ContractPartyName + , a.PropertyMgrEntrustType + , a.IsContractFiled + , a.ProjectDeliverySituation + , a.UnsoldParkingCount + , a.PedEntrExitsCount + , a.CarEntrExitsCount + , a.MixedEntrExitsCount + , a.TotalEntrExitsCount + , a.GuardedEntrExitsCount + , a.MonitoringRoomCount + , a.IsMonRoomMergedToGate + , a.commAddress + , a.CommFrom + , a.DevSubject + , a.TakeOverTime + , a.ManageStage + , a.ChargeMode + , a.IsSetCommittee + , a.CommitteeTime + , a.ProjectFloorPlan + , a.CityLevel + , a.CommitteeTermStartDate + , a.CommitteeTermEndDate +from ( + select + c.CommId + , right(StateName,4) StateName + , a.PropertyMgrEntrustType + , a.IsContractFiled + , a.ContractPartyName + , c.ProjectDeliverySituation + , c.UnsoldParkingCount + , c.PedEntrExitsCount + , c.CarEntrExitsCount + , c.MixedEntrExitsCount + , c.TotalEntrExitsCount + , c.GuardedEntrExitsCount + , c.MonitoringRoomCount + , c.IsMonRoomMergedToGate + , a.GetMethod + , a.GetTime + , a.ContractName + , a.FloorArea + , a.UndergroundArea + , a.GreenArea + , a.ContractTerm + , c.commAddress + , c.CommFrom + , c.DevSubject + , c.TakeOverTime + , c.ManageStage + , c.ChargeMode + , c.IsSetCommittee + , c.CommitteeTime + , c.ProjectFloorPlan + , c.CityLevel + , c.CommitteeTermStartDate + , c.CommitteeTermEndDate + , sum(TakeOverArea) TakeOverArea + , sum(ContractArea) ContractArea + , sum(ManageContractArea) ManageContractArea + from (select * from ods_erp_tb_hspr_projecttakeoverinformation_d where IsDelete = 0) a + left join (select TakeOverArea, ParentId from ods_erp_tb_hspr_projecttakeoverdetail_d WHERE IsDelete = 0) b + on a.id = b.ParentId + right join (select * from ods_erp_tb_hspr_projectbasicinfomation_d where IsDelete = 0) c + on a.ParentId = c.id + group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33 + ) a + right join (select * from ods_erp_tb_hspr_community_d where IsDelete = 0) b + on a.CommId = b.CommId \ No newline at end of file diff --git a/finereport/xiazuan/2_operation/项目明细弹窗.sql b/finereport/xiazuan/2_operation/项目明细弹窗.sql index 8341526..35694a5 100644 --- a/finereport/xiazuan/2_operation/项目明细弹窗.sql +++ b/finereport/xiazuan/2_operation/项目明细弹窗.sql @@ -5,254 +5,250 @@ -- 目 录: xianzuan>2_运营>项目明细弹窗.fvs -- **************************************** +SELECT + A.ManageKindName , -- 管理性质名称 【项目归属】 + A.Province,-- 省 + A.City,-- 市 + A.Citylevel,-- 城市级别 + A.ManageStage,-- 项目状态 + A.TakeOverTime,-- 交付时间 + A.CommFrom,-- 项目来源 + A.DevSubject,-- 项目开发商名称 + A.CommAddress,-- 项目地址 + CASE + WHEN ProjectFloorPlan IS NULL + OR JSON_EXTRACT( JSON_EXTRACT( cast( A.ProjectFloorPlan AS JSON ), '$[0]' ), '$.FileName' ) IS NULL THEN'否' + WHEN JSON_EXTRACT( JSON_EXTRACT( cast( A.ProjectFloorPlan AS JSON ), '$[0]' ), '$.FileName' ) IS NOT NULL THEN'是' + END AS IS_UPLOAD,-- 是否有上传项目平面图 -- 项目平面图 + ( A.FloorArea + A.UndergroundArea ) AS TotalArea,-- 建筑总面积 + A.FloorArea,-- 地上面积 + A.UndergroundArea,-- 地下面积 + A.GreenArea,-- 绿化面积 + A.ContractTerm, + A.PropertyMgrEntrustType, + CASE + WHEN A.IsContractFiled = '1' THEN'是' ELSE '否' + END AS 是否办理合同备案, + A.ProjectDeliverySituation, + A.UnsoldParkingCount, + IF( A.PedEntrExitsCount = 0 OR PedEntrExitsCount IS NULL, '-', PedEntrExitsCount ) AS PedEntrExitsCount, + IF( A.CarEntrExitsCount = 0 OR CarEntrExitsCount IS NULL, '-', CarEntrExitsCount ) AS CarEntrExitsCount, + IF( A.MixedEntrExitsCount = 0 OR MixedEntrExitsCount IS NULL, '-', MixedEntrExitsCount ) AS MixedEntrExitsCount, + IF( A.GuardedEntrExitsCount = 0 OR GuardedEntrExitsCount IS NULL, '-', GuardedEntrExitsCount ) AS GuardedEntrExitsCount, + IF( A.MonitoringRoomCount = 0 OR MonitoringRoomCount IS NULL, '-', MonitoringRoomCount ) AS MonitoringRoomCount, + -- TotalEntrExitsCount = PedEntrExitsCount + CarEntrExitsCount +MixedEntrExitsCount + IF( A.PedEntrExitsCount = 0 OR PedEntrExitsCount IS NULL, '-', PedEntrExitsCount ) + + IF( A.CarEntrExitsCount = 0 OR CarEntrExitsCount IS NULL, '-', CarEntrExitsCount ) + + IF( A.MixedEntrExitsCount = 0 OR MixedEntrExitsCount IS NULL, '-', MixedEntrExitsCount ) AS TotalEntrExitsCount, -SELECT-- ${if(len(p_area) == 0,"B.organ_name","B.comm_name")} as p_area --- ,A.CommId AS CommId -- 项目id 可关联maping表 --- ${if(len(p_area) == 0,",'-'",",A.ManageKindName")} as newManageKind --- ,A.ManageKind AS ManageKind -- 管理性质 【项目归属】 - A.ManageKindName AS ManageKindName -- 管理性质名称 【项目归属】 - , - A.Province, - A.City, - A.Citylevel, -- 城市级别 - A.ManageStage, -- 项目状态 - A.TakeOverTime, -- 交付时间 - A.CommFrom, -- 项目来源 - A.DevSubject, -- 项目开发商名称 - A.CommAddress, -- 项目地址 - CASE WHEN ProjectFloorPlan IS NULL OR JSON_EXTRACT(JSON_EXTRACT(cast(A.ProjectFloorPlan as JSON),'$[0]'),'$.FileName') IS NULL - THEN '否' - WHEN JSON_EXTRACT(JSON_EXTRACT(cast(A.ProjectFloorPlan as JSON),'$[0]'),'$.FileName') IS NOT NULL - THEN '是' - END AS IS_UPLOAD, -- 是否有上传项目平面图 -- 项目平面图 - (A.FloorArea + A.UndergroundArea ) AS TotalArea, -- 建筑总面积 - A.FloorArea, -- 地上面积 - A.UndergroundArea, -- 地下面积 - A.GreenArea, -- 绿化面积 - A.ContractTerm, - A.PropertyMgrEntrustType, - CASE - WHEN A.IsContractFiled = '1' THEN '是' - ELSE '否' - END AS 是否办理合同备案 , - A.ProjectDeliverySituation, - A.UnsoldParkingCount, - IF(A.PedEntrExitsCount=0 OR PedEntrExitsCount IS NULL ,'-',PedEntrExitsCount)as PedEntrExitsCount, - IF(A.CarEntrExitsCount=0 OR CarEntrExitsCount IS NULL ,'-',CarEntrExitsCount)as CarEntrExitsCount, - IF(A.MixedEntrExitsCount=0 OR MixedEntrExitsCount IS NULL ,'-',MixedEntrExitsCount)as MixedEntrExitsCount, - IF(A.GuardedEntrExitsCount=0 OR GuardedEntrExitsCount IS NULL ,'-',GuardedEntrExitsCount)as GuardedEntrExitsCount, - IF(A.MonitoringRoomCount=0 OR MonitoringRoomCount IS NULL ,'-',MonitoringRoomCount)as MonitoringRoomCount, - A.IsMonRoomMergedToGate, - A.ContractArea , -- 合同面积 【建筑面积】 - A.TakeOverArea , -- 接管面积 【合约面积】 - A.ManageContractArea ManageContractArea, -- 管理口径合同面积 【在管面积】 --- ${if(len(p_area) == 0,",'-'",",A.StateName")} as newStateName - A.StateName AS StateName, -- 业态 【项目业态】 - A.ContractName, -- 合同类型 - A.GetMethod, -- 项目获取渠道 - A.ContractPartyName, -- 合同对方名称 - CASE - WHEN A.IsSetCommittee = '1' THEN '是' - ELSE '否' - END AS 是否成立委员会 , -- 是否已成立业主委员会 - A.CommitteeTime, -- 业委会成立时间 - A.ChargeMode, - CONCAT( - DATE_FORMAT(CommitteeTermEndDate, '%Y-%m-%d'), - ' 至 ', - DATE_FORMAT(CommitteeTermStartDate, '%Y-%m-%d') - ) AS 任职天数, -- 任职时间 - C.room_num AS room_num ,-- 总户数 --- ,A.Province AS Province -- 省 --- ,A.City AS City -- 市 --- ,A.County AS County -- 区 - B.organ_code AS organ_code, -- erp片区id - B.organ_name AS organ_name, -- erp片区名称 --- ,B.comm_id AS -- erp项目id - B.comm_name AS comm_name, -- erp项目名称 - D.`已售面积`, - D.`未售面积` , - E.`已售车位`, - F.`已交付户数`, - F.`已接房数`, - F.`正在装修户数`, - F.`已完成装修户数`, - F.`已完成装修未入住`, - F.`已完成装修已入住`,( - F.`已完成装修已入住` / F.`已交付户数` - ) AS 入住率,( - F.`已完成装修户数` / F.`已交付户数` - ) AS 装修率, - G.收费面积, -- 收费面积 - H.签约时间, - I.住宅高层, - I.住宅多层, - I.别墅, - I.联排物业服务费, - I.叠拼物业服务费, - I.洋房物业费, - I.公寓物业服务费, - I.商铺物业服务费, - I.写字楼物业服务费, - I.幼儿园物业服务费, - I.厂区物业服务费, - I.酒店物业服务费, - I.车位管理物业服务费, - I.车位月租费用 + A.IsMonRoomMergedToGate, + A.ContractArea,-- 合同面积 【建筑面积】 + A.TakeOverArea,-- 接管面积 【合约面积】 + A.ManageContractArea ManageContractArea,-- 管理口径合同面积 【在管面积】 + A.StateName AS StateName,-- 业态 【项目业态】 + A.ContractName,-- 合同类型 + A.GetMethod,-- 项目获取渠道 + A.ContractPartyName,-- 合同对方名称 + CASE + WHEN A.IsSetCommittee = '1' THEN'是' ELSE '否' + END AS 是否成立委员会,-- 是否已成立业主委员会 + A.CommitteeTime,-- 业委会成立时间 + A.ChargeMode, + CONCAT( DATE_FORMAT( CommitteeTermEndDate, '%Y-%m-%d' ), ' 至 ', DATE_FORMAT( CommitteeTermStartDate, '%Y-%m-%d' ) ) AS 任职天数,-- 任职时间 + C.room_num AS room_num,-- 总户数 + B.organ_name AS organ_name,-- erp片区名称 + B.comm_name AS comm_name,-- erp项目名称 + C.`已售面积`, + C.`未售面积`, + D.`已售车位`, + C.`已交付户数`, + C.`已接房数`, + C.`正在装修户数`, + C.`已完成装修户数`, + C.`已完成装修未入住`, + C.`已完成装修已入住`, + (C.`已完成装修已入住` / C.`已交付户数` ) AS 入住率, + (C.`已完成装修户数` / C.`已交付户数` ) AS 装修率, + E.收费面积,-- 收费面积 + A.签约时间, + G.住宅高层, + G.住宅多层, + G.别墅, + G.联排物业服务费, + G.叠拼物业服务费, + G.洋房物业费, + G.公寓物业服务费, + G.商铺物业服务费, + G.写字楼物业服务费, + G.幼儿园物业服务费, + G.厂区物业服务费, + G.酒店物业服务费, + G.车位管理物业服务费, + G.车位月租费用 FROM - dw.dim_project_base_info_d A -- 项目维度表 - JOIN ( + ( SELECT - organ_code -- erp片区id - , - organ_name -- erp片区名称 - , - comm_id -- erp项目id - , - comm_name -- erp项目名称 - + T.* + ,max(T.GetTime) OVER(PARTITION BY T.CommId)AS 签约时间 FROM - dw.dim_organ_mapping -- 片区项目映射维度表 - - WHERE - comm_id IS NOT NULL + ( + SELECT + * + ,row_number() OVER(PARTITION BY CommId ORDER BY GetTime DESC) AS RK + FROM dw.dim_project_base_info_d -- 项目维度表 + )T + WHERE T.RK = 1 + ) A + JOIN + ( + SELECT + organ_code, -- erp片区id + organ_name, -- erp片区名称 + comm_id, -- erp项目id + comm_name -- erp项目名称 + FROM dw.dim_organ_mapping -- 片区项目映射维度表 + WHERE comm_id IS NOT NULL AND comm_name NOT LIKE '%撤场%' AND comm_name NOT LIKE '%案场%' AND comm_name NOT LIKE '%禁用%' AND length( comm_id ) != 0 + ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} GROUP BY - organ_code -- erp片区id - , - organ_name -- erp片区名称 - , - comm_id -- erp项目id - , + organ_code, -- erp片区id + organ_name, -- erp片区名称 + comm_id, -- erp项目id comm_name -- erp项目名称 - - ) B ON A.CommId = B.comm_id - LEFT JOIN ( SELECT CommID, count( 1 ) AS room_num -- 项目对应房间数量 - FROM dw.dim_room_d GROUP BY CommID ) C ON A.CommId = C.CommID - LEFT JOIN ( + )B + ON A.CommId = B.comm_id + LEFT JOIN + ( SELECT - CommID, + CommID + ,SUM(CASE WHEN roomstate <> 0 THEN 1 ELSE 0 END) AS room_num, -- 项目对应房间数量 SUM( CASE WHEN roomstate IN ( '1', '4', '9', '10', '5', '6' ) THEN buildarea ELSE 0 END ) AS 已售面积, - SUM( CASE WHEN roomstate = '2' THEN buildarea ELSE 0 END ) AS 未售面积 - FROM - dim_room_d - GROUP BY - CommID - ) D ON A.COMMID = D.COMMID - LEFT JOIN ( - SELECT - CommID, - SUM( CASE WHEN ParkingState IN ( '0001', '0003' ) THEN 1 ELSE 0 END ) AS 已售车位 - FROM - ods_erp_tb_hspr_parking_d - GROUP BY - CommID - ) E ON A.COMMID = E.COMMID - LEFT JOIN ( - SELECT - CommID, + SUM( CASE WHEN roomstate = '2' THEN buildarea ELSE 0 END ) AS 未售面积, SUM( CASE WHEN SaleState = '已售' THEN 1 ELSE 0 END ) AS 已交付户数, SUM( CASE WHEN roomstate IN ( '4', '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS 已接房数, SUM( CASE WHEN roomstate = '4' THEN 1 ELSE 0 END ) AS 正在装修户数, SUM( CASE WHEN roomstate IN ( '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修户数, SUM( CASE WHEN roomstate = '5' THEN 1 ELSE 0 END ) AS 已完成装修未入住, SUM( CASE WHEN roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修已入住 - FROM - dim_room_d + FROM dw.dim_room_d + GROUP BY CommID + )C + ON A.CommId = C.CommID + LEFT JOIN + ( + SELECT + CommID, + SUM( CASE WHEN ParkingState IN ( '0001', '0003' ) THEN 1 ELSE 0 END ) AS 已售车位 + FROM ods_erp_tb_hspr_parking_d GROUP BY CommID - ) F ON A.COMMID = F.COMMID - LEFT JOIN ( SELECT - CommId, - SUM(CalcArea) AS 收费面积 - FROM dim_bind_cost_stan_detail_d - GROUP BY CommId ) G ON A.COMMID = G.COMMID - LEFT JOIN ( - SELECT commid,max(GetTime) AS 签约时间 FROM dim_project_base_info_d GROUP BY CommId - ) H ON A.COMMID = H.COMMID - LEFT JOIN ( + )D + ON A.COMMID = D.COMMID + LEFT JOIN + ( + SELECT + A.CommId AS CommId + ,SUM(A.CalcArea ) AS 收费面积 + FROM + ( + SELECT + CommId + ,CalcArea + ,RoomID + FROM dim_bind_cost_stan_detail_d + WHERE RoomID <> 0 + GROUP BY + CommId + ,CalcArea + ,RoomID + )A + group BY + A.CommId + )E + ON A.COMMID = E.COMMID + LEFT JOIN + ( SELECT A.CommId, - CASE - WHEN SUM(CASE WHEN B.CostName IN ('高层物业服务费', '电梯电费', '公共能耗费') THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName IN ('高层物业服务费', '电梯电费', '公共能耗费') THEN StanAmount ELSE 0 END) - END AS 住宅高层, + IFNULL(group_concat(CASE WHEN B.CostName IN ('高层物业服务费', '电梯电费', '公共能耗费') THEN ROUND(ROUND(B.StanAmount,2),2) END),'-') AS 住宅高层, -- 住宅多层 - CASE - WHEN SUM(CASE WHEN B.CostName IN ('多层物业服务费', '公共能耗费') THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName IN ('多层物业服务费', '公共能耗费') THEN StanAmount ELSE 0 END) - END AS 住宅多层, + IFNULL(group_concat(CASE WHEN B.CostName IN ('多层物业服务费', '公共能耗费') THEN ROUND(B.StanAmount,2) END),'-') AS 住宅多层, -- 别墅 - CASE - WHEN SUM(CASE WHEN B.CostName IN ('别墅物业服务费', '公共能耗费') THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName IN ('别墅物业服务费', '公共能耗费') THEN StanAmount ELSE 0 END) - END AS 别墅, + IFNULL(group_concat(CASE WHEN B.CostName IN ('别墅物业服务费', '公共能耗费') THEN ROUND(B.StanAmount,2) END),'-') AS 别墅, -- 联排物业服务费 - CASE - WHEN SUM(CASE WHEN B.CostName = '联排物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName = '联排物业服务费' THEN StanAmount ELSE 0 END) - END AS 联排物业服务费, + IFNULL(group_concat(CASE WHEN B.CostName = '联排物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 联排物业服务费, -- 叠拼物业服务费 - CASE - WHEN SUM(CASE WHEN B.CostName = '叠拼物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName = '叠拼物业服务费' THEN StanAmount ELSE 0 END) - END AS 叠拼物业服务费, + IFNULL(group_concat(CASE WHEN B.CostName = '叠拼物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 叠拼物业服务费, -- 洋房物业费 - CASE - WHEN SUM(CASE WHEN B.CostName = '洋房物业费' THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName = '洋房物业费' THEN StanAmount ELSE 0 END) - END AS 洋房物业费, + IFNULL(group_concat(CASE WHEN B.CostName = '洋房物业费' THEN ROUND(B.StanAmount,2) END),'-') AS 洋房物业费, -- 公寓物业服务费 - CASE - WHEN SUM(CASE WHEN B.CostName = '公寓物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName = '公寓物业服务费' THEN StanAmount ELSE 0 END) - END AS 公寓物业服务费, + IFNULL(group_concat(CASE WHEN B.CostName = '公寓物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 公寓物业服务费, -- 商铺物业服务费 - CASE - WHEN SUM(CASE WHEN B.CostName = '商铺物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName = '商铺物业服务费' THEN StanAmount ELSE 0 END) - END AS 商铺物业服务费, + IFNULL(group_concat(CASE WHEN B.CostName = '商铺物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 商铺物业服务费, -- 写字楼物业服务费 - CASE - WHEN SUM(CASE WHEN B.CostName = '写字楼物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName = '写字楼物业服务费' THEN StanAmount ELSE 0 END) - END AS 写字楼物业服务费, + IFNULL(group_concat(CASE WHEN B.CostName = '写字楼物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 写字楼物业服务费, -- 幼儿园物业服务费 - CASE - WHEN SUM(CASE WHEN B.CostName = '幼儿园物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName = '幼儿园物业服务费' THEN StanAmount ELSE 0 END) - END AS 幼儿园物业服务费, + IFNULL(group_concat(CASE WHEN B.CostName = '幼儿园物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 幼儿园物业服务费, -- 厂区物业服务费 - CASE - WHEN SUM(CASE WHEN B.CostName = '厂区物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName = '厂区物业服务费' THEN StanAmount ELSE 0 END) - END AS 厂区物业服务费, + IFNULL(group_concat(CASE WHEN B.CostName = '厂区物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 厂区物业服务费, -- 酒店物业服务费 - CASE - WHEN SUM(CASE WHEN B.CostName = '酒店物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName = '酒店物业服务费' THEN StanAmount ELSE 0 END) - END AS 酒店物业服务费, + IFNULL(group_concat(CASE WHEN B.CostName = '酒店物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 酒店物业服务费, -- 车位管理物业服务费 - CASE - WHEN SUM(CASE WHEN B.CostName = '车位管理物业服务费' THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName = '车位管理物业服务费' THEN StanAmount ELSE 0 END) - END AS 车位管理物业服务费, + IFNULL(group_concat(CASE WHEN B.CostName IN('车位管理物业服务费','车位物业服务费') THEN ROUND(B.StanAmount,2) END),'-') AS 车位管理物业服务费, -- 车位月租费用 - CASE - WHEN SUM(CASE WHEN B.CostName = '车位月租' THEN StanAmount ELSE 0 END) = 0 THEN '-' - ELSE SUM(CASE WHEN B.CostName = '车位月租' THEN StanAmount ELSE 0 END) - END AS 车位月租费用 + IFNULL(group_concat(CASE WHEN B.CostName = '车位月租' THEN ROUND(B.StanAmount,2) END),'-') AS 车位月租费用 FROM - dim_cost_stand_d A + ( + + SELECT + DISTINCT + CommID + ,CostID + ,StanID + FROM dim_bind_cost_stan_detail_d -- 绑定的收费标准明细 +-- WHERE CommID = '214330' + )A LEFT JOIN - (SELECT distinct COMMID, COSTID,COSTNAME FROM dim_costitem_d) B ON A.CommID = B.COMMID AND A.CostID = B.COSTID + ( + + SELECT + B1.CommID AS CommID + ,B1.COSTID AS COSTID + ,B1.StanID AS StanID + ,B1.StanAmount AS StanAmount + ,B2.COSTNAME AS COSTNAME + FROM + ( + SELECT + CommID + ,COSTID + ,StanID + ,StanAmount + FROM dim_cost_stand_d -- 小区收费标准 + WHERE StanAmount <> 0 + )B1 + LEFT JOIN + ( + + SELECT + distinct + COMMID + ,COSTID + ,COSTNAME + FROM dim_costitem_d -- 项目上的费用名称 + )B2 + ON B1.CommID = B2.COMMID + AND B1.CostID = B2.COSTID + )B + ON A.CommID = B.COMMID + AND A.CostID = B.COSTID + AND A.StanID = B.StanID GROUP BY A.CommId - ) I ON A.COMMID = I.COMMID -where 1 = 1 - ${IF(LEN(p_area)!=0," and B.organ_code IN ('"+p_area+"')","")} - ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} \ No newline at end of file + )G + ON A.COMMID = G.COMMID \ No newline at end of file From dd5d92bb664ae74f596677e2c8a19c2121dbbe94 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Fri, 6 Sep 2024 10:44:20 +0800 Subject: [PATCH 58/89] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E5=90=88=E5=90=8C=E9=9D=A2=E7=A7=AF=E5=8F=96?= =?UTF-8?q?=E5=80=BC=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dw/dim/dim_project_base_info_d.sql | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/dw/dim/dim_project_base_info_d.sql b/dw/dim/dim_project_base_info_d.sql index 1176e4a..8bfb4a2 100644 --- a/dw/dim/dim_project_base_info_d.sql +++ b/dw/dim/dim_project_base_info_d.sql @@ -1,3 +1,8 @@ +-- ***************************** +-- 修改人: 杨坤安 +-- 修改日期: 2024-09-06 +-- 修改内容: 一个项目接管面积会有多个,先累加再关联 +-- ***************************** select b.CommId , case when b.CommKind = '0001' then '商住' @@ -90,8 +95,23 @@ from ( , sum(TakeOverArea) TakeOverArea , sum(ContractArea) ContractArea , sum(ManageContractArea) ManageContractArea - from (select * from ods_erp_tb_hspr_projecttakeoverinformation_d where IsDelete = 0) a - left join (select TakeOverArea, ParentId from ods_erp_tb_hspr_projecttakeoverdetail_d WHERE IsDelete = 0) b + from + ( + select + * + from ods_erp_tb_hspr_projecttakeoverinformation_d + where IsDelete = 0 + ) a + left join + ( + select + ParentId + ,SUM(TakeOverArea) AS TakeOverArea + from ods_erp_tb_hspr_projecttakeoverdetail_d + WHERE IsDelete = 0 + group by + ParentId + ) b on a.id = b.ParentId right join (select * from ods_erp_tb_hspr_projectbasicinfomation_d where IsDelete = 0) c on a.ParentId = c.id From 39b6f2688b6e8cbde0e4eb87951f47b45af48ad2 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Fri, 6 Sep 2024 20:18:58 +0800 Subject: [PATCH 59/89] =?UTF-8?q?=E7=89=A9=E4=B8=9A=E5=AE=A2=E6=BB=A1?= =?UTF-8?q?=E6=83=85=E5=86=B5=E3=80=81=E9=A1=B9=E7=9B=AE=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E8=A1=A8=E3=80=81=E5=B0=8F=E6=82=A6=E5=88=B0=E5=AE=B6=E5=AE=8C?= =?UTF-8?q?=E5=8D=95=E7=8E=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 1 + finereport/kanban/mobile/物业_mobile.sql | 338 ++++++++++- .../xiazuan/2_operation/项目明细弹窗.sql | 530 +++++++++++------- .../6_innovation/4_小悦到家服务销售明细.sql | 51 ++ 4 files changed, 713 insertions(+), 207 deletions(-) diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 65b33a7..b5ccf60 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -42,6 +42,7 @@ + diff --git a/finereport/kanban/mobile/物业_mobile.sql b/finereport/kanban/mobile/物业_mobile.sql index a609d42..acad5ff 100644 --- a/finereport/kanban/mobile/物业_mobile.sql +++ b/finereport/kanban/mobile/物业_mobile.sql @@ -251,6 +251,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT +DISTINCT +km_target +FROM ods_wuye_gszt +WHERE km_target IS NOT NULL +AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '1月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -262,6 +268,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '2月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -273,6 +285,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '3月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -284,6 +302,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '4月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -295,6 +319,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '5月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -306,6 +336,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '6月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -317,6 +353,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '7月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -328,6 +370,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '8月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -339,6 +387,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '9月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -350,6 +404,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '10月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -361,6 +421,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '11月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -372,6 +438,12 @@ WITH T1 AS ( DISTINCT organ_name AS 维度, organ_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr AS yr, -- 年 '12月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -384,6 +456,12 @@ WITH T1 AS ( SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '1月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -392,11 +470,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '1月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -405,11 +489,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '2月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -418,11 +508,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '3月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -431,11 +527,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '4月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -444,11 +546,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '5月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -457,11 +565,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '6月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -470,11 +584,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '7月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -483,11 +603,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '8月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -496,11 +622,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '9月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -509,11 +641,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '10月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -522,11 +660,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '11月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -535,11 +679,17 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz UNION ALL SELECT DISTINCT organ_name AS 维度, + SUM(index_wl_yxybl) AS wl_yxybl, -- 稳老有效样本量 + SUM(index_wl_myl) AS wl_myl, -- 稳老满意量 + index_wl_qz as wl_qz, -- 稳老权重 + SUM(index_mwl_yxybl) AS mwl_yxybl, -- 磨稳老有效样本量 + SUM(index_mwl_myl) AS mwl_myl, -- 磨稳老满意量 + index_mwl_qz as mwl_qz, -- 磨稳老权重 SUM(IFNULL(index_mydf,0)) AS 得分, '12月' AS m -- 月 FROM ods_wuye_complaint_half_year @@ -548,13 +698,19 @@ WITH T1 AS ( -- AND yr = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1",LEFT(p_ym,4)-1,"2",LEFT(p_ym,4)-1,"3",LEFT(p_ym,4)-1,"4",LEFT(p_ym,4),"5",LEFT(p_ym,4),"6",LEFT(p_ym,4),"7",LEFT(p_ym,4),"8",LEFT(p_ym,4),"9",LEFT(p_ym,4),"10",LEFT(p_ym,4),"11",LEFT(p_ym,4),"12",LEFT(p_ym,4))}' -- AND t_quarter = '${SWITCH(MONTH(CONCATENATE(p_ym,"-01")),"1","四季度","2","四季度","3","四季度","4","一季度","5","一季度","6","一季度","7","二季度","8","二季度","9","二季度","10","三季度","11","三季度","12","三季度")}' ${IF(LEN(p_area)>0," AND 1=2", "")} - GROUP BY organ_name + GROUP BY organ_name,index_wl_qz,index_mwl_qz ),T3 AS ( /*各项目目标*/ SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '1月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -570,6 +726,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '2月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -585,6 +747,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '3月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -600,6 +768,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '4月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -615,6 +789,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '5月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -630,6 +810,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '6月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -645,6 +831,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '7月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -660,6 +852,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '8月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -675,6 +873,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '9月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -690,6 +894,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '10月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -705,6 +915,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '11月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -720,6 +936,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, comm_target AS 目标, + (SELECT + DISTINCT + km_target + FROM ods_wuye_gszt + WHERE km_target IS NOT NULL + AND yr = '${LEFT(p_ym,4)}') AS total_target, -- 公司整体目标得分 yr, '12月' AS m -- 月 FROM ods_wuye_satisfaction_target @@ -737,6 +959,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '1月' AS m -- 月 FROM ods_wuye_complaint @@ -749,6 +977,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '2月' AS m -- 月 FROM ods_wuye_complaint @@ -761,6 +995,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '3月' AS m -- 月 FROM ods_wuye_complaint @@ -773,6 +1013,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '4月' AS m -- 月 FROM ods_wuye_complaint @@ -785,6 +1031,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '5月' AS m -- 月 FROM ods_wuye_complaint @@ -797,6 +1049,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '6月' AS m -- 月 FROM ods_wuye_complaint @@ -809,6 +1067,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '7月' AS m -- 月 FROM ods_wuye_complaint @@ -821,6 +1085,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '8月' AS m -- 月 FROM ods_wuye_complaint @@ -833,6 +1103,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '9月' AS m -- 月 FROM ods_wuye_complaint @@ -845,6 +1121,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '10月' AS m -- 月 FROM ods_wuye_complaint @@ -857,6 +1139,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '11月' AS m -- 月 FROM ods_wuye_complaint @@ -869,6 +1157,12 @@ WITH T1 AS ( SELECT comm_name AS 维度, index_dc_myddf AS 得分, + index_dc_ybl as wl_yxybl, -- 地产有效样本量 + index_dc_myl as wl_myl, -- 地产满意量 + index_dc_qz as wl_qz, -- 地产权重 + index_wy_ybl as mwl_yxybl, -- 物业有效样本量(总样本量) + index_wy_myl as mwl_myl, -- 物业满意量 + index_wy_qz as mwl_qz, -- 权重80% yr, '12月' AS m -- 月 FROM ods_wuye_complaint @@ -880,9 +1174,17 @@ WITH T1 AS ( ) SELECT A.维度, - A.目标, - B.得分, - A.m + -- A.目标, + A.total_target, + -- B.wl_yxybl, -- 有效样本量 + -- B.wl_myl, -- 地产满意量 + -- B.wl_qz, -- 地产权重 + -- B.mwl_yxybl, -- 有效样本量(总样本量) + -- B.mwl_myl, -- 物业满意量 + -- B.mwl_qz, -- 权重80% + -- B.得分, + A.m, + ((((sum(B.wl_myl) / sum(B.wl_yxybl)) * 0.2)) + ((sum(B.mwl_myl) / sum(B.mwl_yxybl)) * 0.8)) * 100 AS 新得分 FROM ${IF(LEN(p_area)>0,"T3 AS A", "T1 AS A")} LEFT JOIN ${IF(LEN(p_area)>0,"T4 AS B", "T2 AS B")} ON A.维度 = B.维度 @@ -891,9 +1193,7 @@ and A.m = B.m WHERE A.目标 > 0 AND B.得分 > 0 ${if(left(fine_role,2)=="项目","and A.维度 = '"+GETUSERDEPARTMENTS(3)+"'","")} - - - +GROUP BY A.维度,A.total_target, A.m diff --git a/finereport/xiazuan/2_operation/项目明细弹窗.sql b/finereport/xiazuan/2_operation/项目明细弹窗.sql index 35694a5..cdb153a 100644 --- a/finereport/xiazuan/2_operation/项目明细弹窗.sql +++ b/finereport/xiazuan/2_operation/项目明细弹窗.sql @@ -4,158 +4,158 @@ -- 功 能: 帆软明细报表-项目明细弹窗 -- 目 录: xianzuan>2_运营>项目明细弹窗.fvs -- **************************************** - +TRUNCATE TABLE dim_comm_base_info_d +INSERT INTO dim_comm_base_info_d SELECT - A.ManageKindName , -- 管理性质名称 【项目归属】 - A.Province,-- 省 - A.City,-- 市 - A.Citylevel,-- 城市级别 - A.ManageStage,-- 项目状态 - A.TakeOverTime,-- 交付时间 - A.CommFrom,-- 项目来源 - A.DevSubject,-- 项目开发商名称 - A.CommAddress,-- 项目地址 - CASE - WHEN ProjectFloorPlan IS NULL - OR JSON_EXTRACT( JSON_EXTRACT( cast( A.ProjectFloorPlan AS JSON ), '$[0]' ), '$.FileName' ) IS NULL THEN'否' - WHEN JSON_EXTRACT( JSON_EXTRACT( cast( A.ProjectFloorPlan AS JSON ), '$[0]' ), '$.FileName' ) IS NOT NULL THEN'是' - END AS IS_UPLOAD,-- 是否有上传项目平面图 -- 项目平面图 - ( A.FloorArea + A.UndergroundArea ) AS TotalArea,-- 建筑总面积 - A.FloorArea,-- 地上面积 - A.UndergroundArea,-- 地下面积 - A.GreenArea,-- 绿化面积 - A.ContractTerm, - A.PropertyMgrEntrustType, - CASE - WHEN A.IsContractFiled = '1' THEN'是' ELSE '否' - END AS 是否办理合同备案, - A.ProjectDeliverySituation, - A.UnsoldParkingCount, - IF( A.PedEntrExitsCount = 0 OR PedEntrExitsCount IS NULL, '-', PedEntrExitsCount ) AS PedEntrExitsCount, - IF( A.CarEntrExitsCount = 0 OR CarEntrExitsCount IS NULL, '-', CarEntrExitsCount ) AS CarEntrExitsCount, - IF( A.MixedEntrExitsCount = 0 OR MixedEntrExitsCount IS NULL, '-', MixedEntrExitsCount ) AS MixedEntrExitsCount, - IF( A.GuardedEntrExitsCount = 0 OR GuardedEntrExitsCount IS NULL, '-', GuardedEntrExitsCount ) AS GuardedEntrExitsCount, - IF( A.MonitoringRoomCount = 0 OR MonitoringRoomCount IS NULL, '-', MonitoringRoomCount ) AS MonitoringRoomCount, - - -- TotalEntrExitsCount = PedEntrExitsCount + CarEntrExitsCount +MixedEntrExitsCount - IF( A.PedEntrExitsCount = 0 OR PedEntrExitsCount IS NULL, '-', PedEntrExitsCount ) - + IF( A.CarEntrExitsCount = 0 OR CarEntrExitsCount IS NULL, '-', CarEntrExitsCount ) - + IF( A.MixedEntrExitsCount = 0 OR MixedEntrExitsCount IS NULL, '-', MixedEntrExitsCount ) AS TotalEntrExitsCount, - - A.IsMonRoomMergedToGate, - A.ContractArea,-- 合同面积 【建筑面积】 - A.TakeOverArea,-- 接管面积 【合约面积】 - A.ManageContractArea ManageContractArea,-- 管理口径合同面积 【在管面积】 - A.StateName AS StateName,-- 业态 【项目业态】 - A.ContractName,-- 合同类型 - A.GetMethod,-- 项目获取渠道 - A.ContractPartyName,-- 合同对方名称 - CASE - WHEN A.IsSetCommittee = '1' THEN'是' ELSE '否' - END AS 是否成立委员会,-- 是否已成立业主委员会 - A.CommitteeTime,-- 业委会成立时间 - A.ChargeMode, - CONCAT( DATE_FORMAT( CommitteeTermEndDate, '%Y-%m-%d' ), ' 至 ', DATE_FORMAT( CommitteeTermStartDate, '%Y-%m-%d' ) ) AS 任职天数,-- 任职时间 - C.room_num AS room_num,-- 总户数 - B.organ_name AS organ_name,-- erp片区名称 - B.comm_name AS comm_name,-- erp项目名称 - C.`已售面积`, - C.`未售面积`, - D.`已售车位`, - C.`已交付户数`, - C.`已接房数`, - C.`正在装修户数`, - C.`已完成装修户数`, - C.`已完成装修未入住`, - C.`已完成装修已入住`, - (C.`已完成装修已入住` / C.`已交付户数` ) AS 入住率, - (C.`已完成装修户数` / C.`已交付户数` ) AS 装修率, - E.收费面积,-- 收费面积 - A.签约时间, - G.住宅高层, - G.住宅多层, - G.别墅, - G.联排物业服务费, - G.叠拼物业服务费, - G.洋房物业费, - G.公寓物业服务费, - G.商铺物业服务费, - G.写字楼物业服务费, - G.幼儿园物业服务费, - G.厂区物业服务费, - G.酒店物业服务费, - G.车位管理物业服务费, - G.车位月租费用 + B.organ_code AS organ_code -- erp片区id + ,B.organ_name AS organ_name -- erp片区名称 + ,B.comm_id AS comm_id -- erp项目id + ,B.comm_name AS comm_name -- erp项目名称 + ,A.Province AS province -- 省 + ,A.City AS city -- 市 + ,A.Citylevel AS citylevel -- 城市级别 + ,A.StateName AS statename -- 业态 【项目业态】 + ,A.ProjectDeliverySituation AS projectdeliverysituation -- 项目交付情况 + ,C.sold_area AS sold_area -- 已售面积 + ,C.unsold_area AS unsold_area -- 未售面积 + ,D.sold_parking_num AS sold_parking_num -- 已售车位 + ,D.unsold_Parking_num AS unsold_parking_num -- 未售车位 + ,A.ManageStage AS managestage -- 项目状态 + ,A.TakeOverTime AS takeovertime -- 交付时间 + ,A.CommFrom AS commfrom -- 项目来源 + ,A.DevSubject AS devsubject -- 项目开发商名称 + ,A.CommAddress AS commaddress -- 项目地址 + ,A.IS_UPLOAD AS is_upload -- 是否有上传项目平面图 + ,(A.FloorArea + A.UndergroundArea ) AS totalarea -- 建筑总面积 + ,A.FloorArea AS floorarea -- 地上面积 + ,A.UndergroundArea AS undergroundarea -- 地下面积 + ,A.ContractArea AS contractarea -- 合约面积 + ,A.TakeOverArea AS takeoverarea -- 在管面积 + ,E.CalcArea AS CalcArea -- 收费面积 + ,A.GreenArea AS greenarea -- 绿化面积 + ,C.room_num AS room_num -- 总户数 + ,C.delivered_num AS delivered_num -- 已交付户数 + ,C.rece_num AS rece_num -- 已接房数 + ,C.fit_num AS fit_num -- 正在装修户数 + ,C.done_fit_num AS done_fit_num -- 已完成装修户数 + ,C.done_fit_no AS done_fit_no -- 已完成装修未入住 + ,C.done_fit_yes AS done_fit_yes -- 已完成装修已入住 + ,IF(C.delivered_num = 0,0,(C.done_fit_yes / C.delivered_num )) AS stay_rate -- 入住率 + ,if(C.delivered_num = 0,0,(C.done_fit_num / C.delivered_num )) AS fit_rate -- 装修率 + ,A.PedEntrExitsCount AS PedEntrExitsCount -- 人行出入口数量 + , A.CarEntrExitsCount AS CarEntrExitsCount -- 车行出入口数量 + ,A.MixedEntrExitsCount AS MixedEntrExitsCount -- 人车混行出入口数量 + ,A.PedEntrExitsCount + A.CarEntrExitsCount + A.MixedEntrExitsCount AS TotalEntrExitsCount -- 总出入口数量 + ,A.GuardedEntrExitsCount AS GuardedEntrExitsCount -- 有人值守出入口数量 + ,A.MonitoringRoomCount AS MonitoringRoomCount -- 独立监控室数量 + ,A.IsMonRoomMergedToGate AS ismonroommergedtogate -- 监控室是否合并至门岗 + ,A.ChargeMode AS ChargeMode -- 收费模式 + ,G.high_housing AS high_housing -- 住宅高层 + ,G.multi_housing AS multi_housing -- 住宅多层 + ,G.villa AS villa -- 别墅 + ,G.town_prope_fee AS town_prope_fee -- 联排物业服务费 + ,G.stacking_prope_fee AS stacking_prope_fee -- 叠拼物业服务费 + ,G.house_prope_fee AS house_prope_fee -- 洋房物业费 + ,G.apart_prope_fee AS apart_prope_fee -- 公寓物业服务费 + ,G.shop_prope_fee AS shop_prope_fee -- 商铺物业服务费 + ,G.office_prope_fee AS office_prope_fee -- 写字楼物业服务费 + ,G.kinder_prope_fee AS kinder_prope_fee -- 学校 + ,G.fact_prope_fee AS fact_prope_fee -- 公共建筑 + ,G.hotel_prope_fee AS hotel_prope_fee -- 酒店物业服务费 + ,G.manage_parking_fee AS manage_parking_fee -- 车位管理物业服务费 + ,G.month_parking_fee AS month_parking_fee -- 车位月租费用 + ,A.ContractName AS contractname -- 合同类型 + ,A.GetMethod AS getmethod -- 项目获取渠道 + ,A.sign_time AS sign_time -- 签约时间 + ,A.ContractTerm AS contractterm -- 合同期限 + ,A.ContractPartyName AS contractpartyname -- 合同对方名称 + ,A.PropertyMgrEntrustType AS propertymgrentrusttype -- 物业管理委托方类型 + ,A.is_contractfiled AS is_contractfiled -- 是否办理合同备案 + ,CASE WHEN A.IsSetCommittee = '1' + THEN'是' ELSE '否' + END AS is_committee -- 是否已成立业主委员会 + ,A.CommitteeTime AS CommitteeTime -- 业委会成立时间 + ,CONCAT(DATE_FORMAT(A.CommitteeTermEndDate, '%Y-%m-%d' ), ' 至 ', DATE_FORMAT(A.CommitteeTermStartDate, '%Y-%m-%d' )) AS service_day -- 任职时间 + ,A.ManageContractArea AS managecontractarea -- 管理口径合同面积 【在管面积】 + ,A.ManageKindName AS managekindname -- 管理性质名称 【项目归属】 FROM +( + SELECT + T.* + ,CASE WHEN T.ProjectFloorPlan IS NULL OR JSON_EXTRACT( JSON_EXTRACT(cast( T.ProjectFloorPlan AS JSON ), '$[0]' ), '$.FileName' ) IS NULL THEN'否' + WHEN JSON_EXTRACT( JSON_EXTRACT( cast( T.ProjectFloorPlan AS JSON ), '$[0]' ), '$.FileName' ) IS NOT NULL THEN'是' + END AS IS_UPLOAD + ,CASE WHEN T.IsContractFiled = '1' + THEN'是' ELSE '否' + END AS is_contractfiled -- 是否办理合同备案 + ,max(T.GetTime) OVER(PARTITION BY T.CommId)AS sign_time -- 签约时间 + FROM ( SELECT - T.* - ,max(T.GetTime) OVER(PARTITION BY T.CommId)AS 签约时间 - FROM - ( - SELECT - * - ,row_number() OVER(PARTITION BY CommId ORDER BY GetTime DESC) AS RK - FROM dw.dim_project_base_info_d -- 项目维度表 - )T - WHERE T.RK = 1 - ) A - JOIN - ( - SELECT + * + ,row_number() OVER(PARTITION BY CommId ORDER BY GetTime DESC) AS RK + FROM dw.dim_project_base_info_d -- 项目维度表 + )T + WHERE T.RK = 1 +) A +JOIN +( + SELECT organ_code, -- erp片区id organ_name, -- erp片区名称 comm_id, -- erp项目id comm_name -- erp项目名称 - FROM dw.dim_organ_mapping -- 片区项目映射维度表 - WHERE comm_id IS NOT NULL - AND comm_name NOT LIKE '%撤场%' - AND comm_name NOT LIKE '%案场%' - AND comm_name NOT LIKE '%禁用%' - AND length( comm_id ) != 0 - ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} - ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} - GROUP BY - organ_code, -- erp片区id - organ_name, -- erp片区名称 - comm_id, -- erp项目id - comm_name -- erp项目名称 - )B - ON A.CommId = B.comm_id - LEFT JOIN - ( + FROM dw.dim_organ_mapping -- 片区项目映射维度表 + WHERE comm_id IS NOT NULL + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%禁用%' + AND length( comm_id ) != 0 + -- ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} + -- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + GROUP BY + organ_code, -- erp片区id + organ_name, -- erp片区名称 + comm_id, -- erp项目id + comm_name -- erp项目名称 +)B +ON A.CommId = B.comm_id +LEFT JOIN +( SELECT CommID - ,SUM(CASE WHEN roomstate <> 0 THEN 1 ELSE 0 END) AS room_num, -- 项目对应房间数量 - SUM( CASE WHEN roomstate IN ( '1', '4', '9', '10', '5', '6' ) THEN buildarea ELSE 0 END ) AS 已售面积, - SUM( CASE WHEN roomstate = '2' THEN buildarea ELSE 0 END ) AS 未售面积, - SUM( CASE WHEN SaleState = '已售' THEN 1 ELSE 0 END ) AS 已交付户数, - SUM( CASE WHEN roomstate IN ( '4', '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS 已接房数, - SUM( CASE WHEN roomstate = '4' THEN 1 ELSE 0 END ) AS 正在装修户数, - SUM( CASE WHEN roomstate IN ( '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修户数, - SUM( CASE WHEN roomstate = '5' THEN 1 ELSE 0 END ) AS 已完成装修未入住, - SUM( CASE WHEN roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修已入住 + ,SUM(CASE WHEN roomstate <> 0 THEN 1 ELSE 0 END) AS room_num -- 项目对应房间数量 + ,SUM(CASE WHEN roomstate IN ( '1', '4', '9', '10', '5', '6' ) THEN buildarea ELSE 0 END ) AS sold_area -- 已售面积 + ,SUM(CASE WHEN roomstate = '2' THEN buildarea ELSE 0 END ) AS unsold_area -- 未售面积 + ,SUM(CASE WHEN roomstate NOT IN('0','2') THEN 1 ELSE 0 END ) AS delivered_num -- 已交付户数 + ,SUM(CASE WHEN roomstate IN ( '4', '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS rece_num -- 已接房数 + ,SUM(CASE WHEN roomstate = '4' THEN 1 ELSE 0 END ) AS fit_num -- 正在装修户数 + ,SUM(CASE WHEN roomstate IN ( '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS done_fit_num -- 已完成装修户数 + ,SUM(CASE WHEN roomstate = '5' THEN 1 ELSE 0 END ) AS done_fit_no -- 已完成装修未入住 + ,SUM(CASE WHEN roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS done_fit_yes -- 已完成装修已入住 FROM dw.dim_room_d GROUP BY CommID - )C +)C ON A.CommId = C.CommID LEFT JOIN ( SELECT - CommID, - SUM( CASE WHEN ParkingState IN ( '0001', '0003' ) THEN 1 ELSE 0 END ) AS 已售车位 + CommID + ,SUM( CASE WHEN ParkingState IN ( '0001', '0003' ) THEN 1 ELSE 0 END ) AS sold_parking_num -- 已售车位 + ,SUM(CASE WHEN ParkingState IN ( '0002', '0004' ) THEN 1 ELSE 0 END) AS unsold_Parking_num -- 未售车位 FROM ods_erp_tb_hspr_parking_d + WHERE IsDelete = '0' GROUP BY CommID )D ON A.COMMID = D.COMMID - LEFT JOIN + LEFT JOIN ( SELECT A.CommId AS CommId - ,SUM(A.CalcArea ) AS 收费面积 + ,SUM(A.CalcArea ) AS CalcArea FROM - ( + ( SELECT CommId ,CalcArea @@ -166,89 +166,243 @@ FROM CommId ,CalcArea ,RoomID - )A - group BY - A.CommId + )A + GROUP BY + A.CommId )E ON A.COMMID = E.COMMID - LEFT JOIN + LEFT JOIN ( SELECT - A.CommId, - IFNULL(group_concat(CASE WHEN B.CostName IN ('高层物业服务费', '电梯电费', '公共能耗费') THEN ROUND(ROUND(B.StanAmount,2),2) END),'-') AS 住宅高层, - -- 住宅多层 - IFNULL(group_concat(CASE WHEN B.CostName IN ('多层物业服务费', '公共能耗费') THEN ROUND(B.StanAmount,2) END),'-') AS 住宅多层, + A.CommId + -- 住宅高层 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName IN ('高层物业服务费', '电梯电费', '公共能耗费') THEN ROUND(ROUND(B.StanAmount,2),2) END),',','\n'),'-') AS high_housing -- 住宅高层 + -- 住宅多层 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName IN ('多层物业服务费', '公共能耗费') THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS multi_housing -- 住宅多层 -- 别墅 - IFNULL(group_concat(CASE WHEN B.CostName IN ('别墅物业服务费', '公共能耗费') THEN ROUND(B.StanAmount,2) END),'-') AS 别墅, + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName IN ('别墅物业服务费', '公共能耗费') THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS villa -- 别墅 -- 联排物业服务费 - IFNULL(group_concat(CASE WHEN B.CostName = '联排物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 联排物业服务费, + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%联排%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS town_prope_fee -- 联排物业服务费 -- 叠拼物业服务费 - IFNULL(group_concat(CASE WHEN B.CostName = '叠拼物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 叠拼物业服务费, + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%叠拼%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS stacking_prope_fee -- 叠拼物业服务费 -- 洋房物业费 - IFNULL(group_concat(CASE WHEN B.CostName = '洋房物业费' THEN ROUND(B.StanAmount,2) END),'-') AS 洋房物业费, + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%洋房%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS house_prope_fee -- 洋房物业费 -- 公寓物业服务费 - IFNULL(group_concat(CASE WHEN B.CostName = '公寓物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 公寓物业服务费, + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%公寓%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS apart_prope_fee -- 公寓物业服务费 -- 商铺物业服务费 - IFNULL(group_concat(CASE WHEN B.CostName = '商铺物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 商铺物业服务费, + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%商铺%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS shop_prope_fee -- 商铺物业服务费 -- 写字楼物业服务费 - IFNULL(group_concat(CASE WHEN B.CostName = '写字楼物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 写字楼物业服务费, + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%写字楼%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS office_prope_fee -- 写字楼物业服务费 -- 幼儿园物业服务费 - IFNULL(group_concat(CASE WHEN B.CostName = '幼儿园物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 幼儿园物业服务费, + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%幼儿园%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS kinder_prope_fee-- 幼儿园物业服务费 -- 厂区物业服务费 - IFNULL(group_concat(CASE WHEN B.CostName = '厂区物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 厂区物业服务费, + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%厂区%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS fact_prope_fee -- 厂区物业服务费 -- 酒店物业服务费 - IFNULL(group_concat(CASE WHEN B.CostName = '酒店物业服务费' THEN ROUND(B.StanAmount,2) END),'-') AS 酒店物业服务费, + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%酒店%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS hotel_prope_fee -- 酒店物业服务费 -- 车位管理物业服务费 - IFNULL(group_concat(CASE WHEN B.CostName IN('车位管理物业服务费','车位物业服务费') THEN ROUND(B.StanAmount,2) END),'-') AS 车位管理物业服务费, + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName IN('车位管理物业服务费','车位物业服务费') THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS manage_parking_fee -- 车位管理物业服务费 -- 车位月租费用 - IFNULL(group_concat(CASE WHEN B.CostName = '车位月租' THEN ROUND(B.StanAmount,2) END),'-') AS 车位月租费用 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName = '车位月租' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS month_parking_fee -- 车位月租费用 FROM - ( + ( SELECT DISTINCT - CommID - ,CostID - ,StanID + CommID + ,CostID + ,StanID FROM dim_bind_cost_stan_detail_d -- 绑定的收费标准明细 --- WHERE CommID = '214330' - )A - LEFT JOIN + -- WHERE CommID = '214330' + )A + LEFT JOIN + ( + SELECT + B1.CommID AS CommID + ,B1.COSTID AS COSTID + ,B1.StanID AS StanID + ,B1.StanAmount AS StanAmount + ,B2.COSTNAME AS COSTNAME + FROM ( - SELECT - B1.CommID AS CommID - ,B1.COSTID AS COSTID - ,B1.StanID AS StanID - ,B1.StanAmount AS StanAmount - ,B2.COSTNAME AS COSTNAME - FROM - ( - SELECT - CommID - ,COSTID - ,StanID - ,StanAmount - FROM dim_cost_stand_d -- 小区收费标准 - WHERE StanAmount <> 0 - )B1 - LEFT JOIN - ( - - SELECT - distinct - COMMID - ,COSTID - ,COSTNAME - FROM dim_costitem_d -- 项目上的费用名称 - )B2 - ON B1.CommID = B2.COMMID - AND B1.CostID = B2.COSTID - )B - ON A.CommID = B.COMMID - AND A.CostID = B.COSTID - AND A.StanID = B.StanID + CommID + ,COSTID + ,StanID + ,StanAmount + FROM dim_cost_stand_d -- 小区收费标准 + WHERE StanAmount <> 0 + )B1 + LEFT JOIN + ( + SELECT + distinct + COMMID + ,COSTID + ,COSTNAME + FROM dim_costitem_d -- 项目上的费用名称 + )B2 + ON B1.CommID = B2.COMMID + AND B1.CostID = B2.COSTID + )B + ON A.CommID = B.COMMID + AND A.CostID = B.COSTID + AND A.StanID = B.StanID GROUP BY - A.CommId + A.CommId )G - ON A.COMMID = G.COMMID \ No newline at end of file + ON A.COMMID = G.COMMID +; + + +DROP table dim_comm_base_info_d; + +SELECT count(1)from dim_comm_base_info_d; +CREATE TABLE dim_comm_base_info_d +( + organ_code VARCHAR(100) COMMENT 'erp片区id', + organ_name VARCHAR(100) COMMENT 'erp片区名称', + comm_id VARCHAR(100) COMMENT 'erp项目id', + comm_name VARCHAR(100) COMMENT 'erp项目名称', + province VARCHAR(100) COMMENT '省', + city VARCHAR(100) COMMENT '市', + citylevel VARCHAR(100) COMMENT '城市级别', + statename VARCHAR(100) COMMENT '业态 【项目业态】', + projectdeliverysituation VARCHAR(100) COMMENT '项目交付情况', + sold_area DECIMAL(16,4) COMMENT '已售面积', + unsold_area DECIMAL(16,4) COMMENT '未售面积', + sold_parking_num INT COMMENT '已售车位', + unsold_parking_num INT COMMENT '未售车位', + managestage VARCHAR(100) COMMENT '项目状态', + takeovertime VARCHAR(100) COMMENT '交付时间', + commfrom VARCHAR(100) COMMENT '项目来源', + devsubject VARCHAR(100) COMMENT '项目开发商名称', + commaddress VARCHAR(100) COMMENT '项目地址', + is_upload VARCHAR(100) COMMENT '是否有上传项目平面图', + totalarea DECIMAL(16,4) COMMENT '建筑总面积', + floorarea DECIMAL(16,4) COMMENT '地上面积', + undergroundarea DECIMAL(16,4) COMMENT '地下面积', + contractarea DECIMAL(16,4) COMMENT '合约面积', + takeoverarea DECIMAL(16,4) COMMENT '在管面积', + CalcArea DECIMAL(16,4) COMMENT '收费面积', + greenarea DECIMAL(16,4) COMMENT '绿化面积', + room_num INT COMMENT '总户数', + delivered_num INT COMMENT '已交付户数', + rece_num INT COMMENT '已接房数', + fit_num INT COMMENT '正在装修户数', + done_fit_num INT COMMENT '已完成装修户数', + done_fit_no INT COMMENT '已完成装修未入住', + done_fit_yes INT COMMENT '已完成装修已入住', + stay_rate DECIMAL(8,4) COMMENT '入住率', + fit_rate DECIMAL(8,4) COMMENT '装修率', + PedEntrExitsCount INT COMMENT '人行出入口数量', + CarEntrExitsCount INT COMMENT '车行出入口数量', + MixedEntrExitsCount INT COMMENT '人车混行出入口数量', + TotalEntrExitsCount INT COMMENT '总出入口数量', + GuardedEntrExitsCount INT COMMENT '有人值守出入口数量', + MonitoringRoomCount INT COMMENT '独立监控室数量', + ismonroommergedtogate VARCHAR(100) COMMENT '监控室是否合并至门岗', + ChargeMode VARCHAR(100) COMMENT '收费模式', + high_housing VARCHAR(100) COMMENT '住宅高层', + multi_housing VARCHAR(100) COMMENT '住宅多层', + villa VARCHAR(100) COMMENT '别墅', + town_prope_fee VARCHAR(100) COMMENT '联排物业服务费', + stacking_prope_fee VARCHAR(100) COMMENT '叠拼物业服务费', + house_prope_fee VARCHAR(100) COMMENT '洋房物业费', + apart_prope_fee VARCHAR(100) COMMENT '公寓物业服务费', + shop_prope_fee VARCHAR(100) COMMENT '商铺物业服务费', + office_prope_fee VARCHAR(100) COMMENT '写字楼物业服务费', + kinder_prope_fee VARCHAR(100) COMMENT '学校', + fact_prope_fee VARCHAR(100) COMMENT '公共建筑', + hotel_prope_fee VARCHAR(100) COMMENT '酒店物业服务费', + manage_parking_fee VARCHAR(100) COMMENT '车位管理物业服务费', + month_parking_fee VARCHAR(100) COMMENT '车位月租费用', + contractname VARCHAR(100) COMMENT '合同类型', + getmethod VARCHAR(100) COMMENT '项目获取渠道', + sign_time VARCHAR(100) COMMENT '签约时间', + contractterm VARCHAR(100) COMMENT '合同期限', + contractpartyname VARCHAR(100) COMMENT '合同对方名称', + propertymgrentrusttype VARCHAR(100) COMMENT '物业管理委托方类型', + is_contractfiled VARCHAR(100) COMMENT '是否办理合同备案', + is_committee VARCHAR(100) COMMENT '是否已成立业主委员会', + CommitteeTime VARCHAR(100) COMMENT '业委会成立时间', + service_day VARCHAR(100) COMMENT '任职时间', + managecontractarea DECIMAL(16,4) COMMENT '管理口径合同面积 【在管面积】', + managekindname VARCHAR(100) COMMENT '管理性质名称 【项目归属】' +)COMMENT = '项目基础信息表'; + + + + +SELECT + organ_name -- erp片区名称 + ,comm_name -- erp项目名称 + ,province -- 省 + ,city -- 市 + ,citylevel -- 城市级别 + ,statename -- 业态 【项目业态】 + ,projectdeliverysituation -- 项目交付情况 + ,sold_area -- 已售面积 + ,unsold_area -- 未售面积 + ,sold_parking_num -- 已售车位 + ,unsold_parking_num -- 未售车位 + ,managestage -- 项目状态 + ,left(takeovertime,10) as takeovertime -- 交付时间 + ,commfrom -- 项目来源 + ,devsubject -- 项目开发商名称 + ,commaddress -- 项目地址 + ,is_upload -- 是否有上传项目平面图 + ,totalarea -- 建筑总面积 + ,floorarea -- 地上面积 + ,undergroundarea -- 地下面积 + ,contractarea -- 合约面积 + ,takeoverarea -- 在管面积 + ,CalcArea -- 收费面积 + ,greenarea -- 绿化面积 + ,room_num -- 总户数 + ,delivered_num -- 已交付户数 + ,rece_num -- 已接房数 + ,fit_num -- 正在装修户数 + ,done_fit_num -- 已完成装修户数 + ,done_fit_no -- 已完成装修未入住 + ,done_fit_yes -- 已完成装修已入住 + ,stay_rate -- 入住率 + ,fit_rate -- 装修率 + ,PedEntrExitsCount -- 人行出入口数量 + ,CarEntrExitsCount -- 车行出入口数量 + ,MixedEntrExitsCount -- 人车混行出入口数量 + ,TotalEntrExitsCount -- 总出入口数量 + ,GuardedEntrExitsCount -- 有人值守出入口数量 + ,MonitoringRoomCount -- 独立监控室数量 + ,ismonroommergedtogate -- 监控室是否合并至门岗 + ,ChargeMode -- 收费模式 + ,high_housing -- 住宅高层 + ,multi_housing -- 住宅多层 + ,villa -- 别墅 + ,town_prope_fee -- 联排物业服务费 + ,stacking_prope_fee -- 叠拼物业服务费 + ,house_prope_fee -- 洋房物业费 + ,apart_prope_fee -- 公寓物业服务费 + ,shop_prope_fee -- 商铺物业服务费 + ,office_prope_fee -- 写字楼物业服务费 + ,kinder_prope_fee -- 学校 + ,fact_prope_fee -- 公共建筑 + ,hotel_prope_fee -- 酒店物业服务费 + ,manage_parking_fee -- 车位管理物业服务费 + ,month_parking_fee -- 车位月租费用 + ,contractname -- 合同类型 + ,getmethod -- 项目获取渠道 + ,left(sign_time,10) AS sign_time -- 签约时间 + ,contractterm -- 合同期限 + ,contractpartyname -- 合同对方名称 + ,propertymgrentrusttype -- 物业管理委托方类型 + ,is_contractfiled -- 是否办理合同备案 + ,is_committee -- 是否已成立业主委员会 + ,left(CommitteeTime,10) AS CommitteeTime -- 业委会成立时间 + ,left(service_day,10) AS service_day -- 任职时间 + ,managecontractarea -- 管理口径合同面积 【在管面积】 + ,managekindname -- 管理性质名称 【项目归属】' +FROM dim_comm_base_info_d +where 1 = 1 +${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} +${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + diff --git a/finereport/xiazuan/6_innovation/4_小悦到家服务销售明细.sql b/finereport/xiazuan/6_innovation/4_小悦到家服务销售明细.sql index e69de29..967396b 100644 --- a/finereport/xiazuan/6_innovation/4_小悦到家服务销售明细.sql +++ b/finereport/xiazuan/6_innovation/4_小悦到家服务销售明细.sql @@ -0,0 +1,51 @@ + +-- 【小悦到家完单率】 +select + ${IF(LEN(p_shop)>0,"d.comm_name","d.organ_name")} AS 分析维度 + ,count(*) order_num -- 订单数量 + ,sum(case when a.confirm_ym is null then 0 else 1 end) order_finish_num -- 订单完成数量 + ,IF(count(*) = 0,0,sum(case when a.confirm_ym is null then 0 else 1 end) / count(*)) AS order_finish_rate -- 完单率 +from +( + select + orderNo -- 订单号 + , date_format(createTime,'%Y-%m') create_ym -- 订单创建时间 + , date_format(confirmTime,'%Y-%m') confirm_ym -- 订单收货时间 + , vid -- 项目id + from dwd_innoveco_order_info_d -- 订单信息 +)a +inner join +( + select + orderNo + ,skuid + ,categoryLevel1 + ,goodsTitle -- 商品名称 + from dwd_innoveco_order_item_d -- 订单项信息 + where skuid in ('210627208100769','210627209100769','210627910100769','210625842100769','212609619100769','212609630100769','212603476100769','212603435100769','212603991100769','212603992100769','212603993100769','212300126100769','212298914100769','212299441100769','212299442100769','212299443100769','212299444100769','212297464100769','212297465100769','212296013100769','212314094100769','212314095100769','212314096100769','212328078100769','212328079100769','212294902100769','212292070100769','212287875100769','218885780100769','218884653100769','218884327100769','218692804100769','218691252100769','217847406100769','217479477100769') +) b +on a.orderNo = b.orderNo +left join +( + select + DISTINCT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,weim_comm_id + from dim_organ_mapping +) d +on a.vid = d.weim_comm_id +where 1=1 + ${IF(p_timetype = "本月","/*","")} + ${IF(LEN(p_startdate)>0,"AND a.create_ym >= '"+FORMAT(p_startdate,"yyyy-MM")+"'","")} + ${IF(LEN(p_enddate)>0,"AND a.create_ym <= '"+FORMAT(p_enddate,"yyyy-MM")+"'","")} + ${IF(p_timetype = "本月","*/","")} + ${IF(p_timetype = "本月","","/*")} +AND a.create_ym = DATE_FORMAT(NOW(),'%Y-%m') + ${IF(p_timetype = "本月","","*/")} + ${IF(LEN(p_area)>0," AND d.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_shop)>0," AND d.comm_id IN ('"+JOINARRAY(p_shop,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and d.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +GROUP BY 分析维度 \ No newline at end of file From 048b63294b42512f85aed88bde6d3b57a491d30a Mon Sep 17 00:00:00 2001 From: yangkunan Date: Mon, 9 Sep 2024 10:21:12 +0800 Subject: [PATCH 60/89] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E5=BC=B9=E7=AA=97=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xiazuan/2_operation/项目明细弹窗.sql | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/finereport/xiazuan/2_operation/项目明细弹窗.sql b/finereport/xiazuan/2_operation/项目明细弹窗.sql index cdb153a..d5ebda5 100644 --- a/finereport/xiazuan/2_operation/项目明细弹窗.sql +++ b/finereport/xiazuan/2_operation/项目明细弹窗.sql @@ -75,7 +75,7 @@ SELECT THEN'是' ELSE '否' END AS is_committee -- 是否已成立业主委员会 ,A.CommitteeTime AS CommitteeTime -- 业委会成立时间 - ,CONCAT(DATE_FORMAT(A.CommitteeTermEndDate, '%Y-%m-%d' ), ' 至 ', DATE_FORMAT(A.CommitteeTermStartDate, '%Y-%m-%d' )) AS service_day -- 任职时间 + ,CONCAT(DATE_FORMAT(A.CommitteeTermStartDate, '%Y-%m-%d' ) , ' 至 ',DATE_FORMAT(A.CommitteeTermEndDate, '%Y-%m-%d' )) AS service_day -- 任职时间 ,A.ManageContractArea AS managecontractarea -- 管理口径合同面积 【在管面积】 ,A.ManageKindName AS managekindname -- 管理性质名称 【项目归属】 FROM @@ -404,5 +404,17 @@ SELECT FROM dim_comm_base_info_d where 1 = 1 ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} -${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} - +-- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +AND CASE WHEN'${fine_username}' = 'WangXiaoLi0726' + THEN comm_name IN('【眉山】凯旋天域','【眉山】凯旋广场') + WHEN'${fine_username}' = 'SongPan1117' + THEN comm_name IN('【眉山】联想天府云城','【眉山】眉山联想叠云创新科技园三期') + WHEN'${fine_username}' = 'ZhuGuiQiong' + THEN comm_name IN('【眉山】江公丽景B区','【眉山】领地凯旋滨江') + WHEN'${fine_username}' = 'LiXin01' + THEN comm_name IN('【眉山】世代学府','【眉山】九号公馆') + WHEN'${fine_username}' = 'ChenYuHong0906' + THEN comm_name IN('【眉山】领地花屿二期','【眉山】领地凯旋国际公馆二期') + WHEN'${fine_username}' = 'WangJing' + THEN comm_name IN('【乐山】澜山悦','【乐山】领地蘭台府') + ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} \ No newline at end of file From 3909b09182c1fe487e05dbdf7dde872fbec070e8 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 10 Sep 2024 14:19:56 +0800 Subject: [PATCH 61/89] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E8=AE=A1=E8=B4=B9?= =?UTF-8?q?=E9=9D=A2=E7=A7=AF=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- finereport/xiazuan/2_operation/项目明细弹窗.sql | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/finereport/xiazuan/2_operation/项目明细弹窗.sql b/finereport/xiazuan/2_operation/项目明细弹窗.sql index d5ebda5..2e9cbc6 100644 --- a/finereport/xiazuan/2_operation/项目明细弹窗.sql +++ b/finereport/xiazuan/2_operation/项目明细弹窗.sql @@ -133,7 +133,9 @@ LEFT JOIN ,SUM(CASE WHEN roomstate IN ( '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS done_fit_num -- 已完成装修户数 ,SUM(CASE WHEN roomstate = '5' THEN 1 ELSE 0 END ) AS done_fit_no -- 已完成装修未入住 ,SUM(CASE WHEN roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS done_fit_yes -- 已完成装修已入住 - FROM dw.dim_room_d + FROM dw.dim_room_d a + -- 排除掉房间表里房屋状态是未删除而在费用表里是删除的房子 + WHERE exists(SELECT 1 FROM dim_bind_cost_stan_detail_d B WHERE a.CommID = b.CommID AND A.RoomID = b.RoomID) GROUP BY CommID )C ON A.CommId = C.CommID @@ -167,6 +169,16 @@ LEFT JOIN ,CalcArea ,RoomID )A + JOIN + (-- 排除掉费用表里房屋状态是未删除而在房间表里是删除的房子 + SELECT + CommID + ,RoomID + FROM dw.dim_room_d + GROUP BY CommID,RoomID + )B + ON A.RoomID = B.RoomID + AND a.CommID = B.CommID GROUP BY A.CommId )E From 7b6e7beb5fc8f39876b9807771cb7bdf1dec2916 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 10 Sep 2024 15:16:21 +0800 Subject: [PATCH 62/89] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E8=AE=A1=E8=B4=B9?= =?UTF-8?q?=E9=9D=A2=E7=A7=AF=E9=80=BB=E8=BE=91=E4=BC=98=E5=8C=96=EF=BC=8C?= =?UTF-8?q?=E4=BB=8EODS=E5=8F=96=E6=95=B0=EF=BC=8C=E4=BB=A5=E6=88=BF?= =?UTF-8?q?=E9=97=B4=E8=A1=A8=E6=88=BF=E5=B1=8B=E7=8A=B6=E6=80=81=E4=B8=BA?= =?UTF-8?q?=E5=87=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xiazuan/2_operation/项目明细弹窗.sql | 373 +++++++++++++++--- 1 file changed, 325 insertions(+), 48 deletions(-) diff --git a/finereport/xiazuan/2_operation/项目明细弹窗.sql b/finereport/xiazuan/2_operation/项目明细弹窗.sql index 2e9cbc6..1312101 100644 --- a/finereport/xiazuan/2_operation/项目明细弹窗.sql +++ b/finereport/xiazuan/2_operation/项目明细弹窗.sql @@ -31,7 +31,7 @@ SELECT ,A.UndergroundArea AS undergroundarea -- 地下面积 ,A.ContractArea AS contractarea -- 合约面积 ,A.TakeOverArea AS takeoverarea -- 在管面积 - ,E.CalcArea AS CalcArea -- 收费面积 + ,C.CalcArea AS CalcArea -- 收费面积 ,A.GreenArea AS greenarea -- 绿化面积 ,C.room_num AS room_num -- 总户数 ,C.delivered_num AS delivered_num -- 已交付户数 @@ -123,20 +123,44 @@ ON A.CommId = B.comm_id LEFT JOIN ( SELECT - CommID - ,SUM(CASE WHEN roomstate <> 0 THEN 1 ELSE 0 END) AS room_num -- 项目对应房间数量 - ,SUM(CASE WHEN roomstate IN ( '1', '4', '9', '10', '5', '6' ) THEN buildarea ELSE 0 END ) AS sold_area -- 已售面积 - ,SUM(CASE WHEN roomstate = '2' THEN buildarea ELSE 0 END ) AS unsold_area -- 未售面积 - ,SUM(CASE WHEN roomstate NOT IN('0','2') THEN 1 ELSE 0 END ) AS delivered_num -- 已交付户数 - ,SUM(CASE WHEN roomstate IN ( '4', '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS rece_num -- 已接房数 - ,SUM(CASE WHEN roomstate = '4' THEN 1 ELSE 0 END ) AS fit_num -- 正在装修户数 - ,SUM(CASE WHEN roomstate IN ( '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS done_fit_num -- 已完成装修户数 - ,SUM(CASE WHEN roomstate = '5' THEN 1 ELSE 0 END ) AS done_fit_no -- 已完成装修未入住 - ,SUM(CASE WHEN roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS done_fit_yes -- 已完成装修已入住 - FROM dw.dim_room_d a - -- 排除掉房间表里房屋状态是未删除而在费用表里是删除的房子 - WHERE exists(SELECT 1 FROM dim_bind_cost_stan_detail_d B WHERE a.CommID = b.CommID AND A.RoomID = b.RoomID) - GROUP BY CommID + a.CommID AS CommID + ,SUM(CASE WHEN a.roomstate <> 0 THEN 1 ELSE 0 END) AS room_num -- 项目对应房间数量 + ,SUM(CASE WHEN a.roomstate IN ( '1', '4', '9', '10', '5', '6' ) THEN a.buildarea ELSE 0 END ) AS sold_area -- 已售面积 + ,SUM(CASE WHEN a.roomstate = '2' THEN a.buildarea ELSE 0 END ) AS unsold_area -- 未售面积 + ,SUM(CASE WHEN a.roomstate NOT IN('0','2') THEN 1 ELSE 0 END ) AS delivered_num -- 已交付户数 + ,SUM(CASE WHEN a.roomstate IN ( '4', '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS rece_num -- 已接房数 + ,SUM(CASE WHEN a.roomstate = '4' THEN 1 ELSE 0 END ) AS fit_num -- 正在装修户数 + ,SUM(CASE WHEN a.roomstate IN ( '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS done_fit_num -- 已完成装修户数 + ,SUM(CASE WHEN a.roomstate = '5' THEN 1 ELSE 0 END ) AS done_fit_no -- 已完成装修未入住 + ,SUM(CASE WHEN a.roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS done_fit_yes -- 已完成装修已入住 + ,SUM(b.CalcArea) AS CalcArea + FROM + ( + SELECT + * + FROM dw.dim_room_d + )a + LEFT JOIN + ( + SELECT + b1.CommId AS CommId + ,b1.RoomID AS RoomID + ,SUM(CalcArea) AS CalcArea + FROM + ( + SELECT + CommId + , CalcArea + , RoomID + FROM ods_erp_tb_hspr_coststansetting_d + WHERE RoomID <> '0' + GROUP BY CommId, CalcArea, RoomID + )b1 + GROUP BY b1.CommId,b1.RoomID + )b + ON a.CommID = b.CommId + AND a.RoomID = b.RoomID + GROUP BY CommID )C ON A.CommId = C.CommID LEFT JOIN @@ -152,38 +176,6 @@ LEFT JOIN )D ON A.COMMID = D.COMMID LEFT JOIN - ( - SELECT - A.CommId AS CommId - ,SUM(A.CalcArea ) AS CalcArea - FROM - ( - SELECT - CommId - ,CalcArea - ,RoomID - FROM dim_bind_cost_stan_detail_d - WHERE RoomID <> 0 - GROUP BY - CommId - ,CalcArea - ,RoomID - )A - JOIN - (-- 排除掉费用表里房屋状态是未删除而在房间表里是删除的房子 - SELECT - CommID - ,RoomID - FROM dw.dim_room_d - GROUP BY CommID,RoomID - )B - ON A.RoomID = B.RoomID - AND a.CommID = B.CommID - GROUP BY - A.CommId - )E - ON A.COMMID = E.COMMID - LEFT JOIN ( SELECT A.CommId @@ -429,4 +421,289 @@ AND CASE WHEN'${fine_username}' = 'WangXiaoLi0726' THEN comm_name IN('【眉山】领地花屿二期','【眉山】领地凯旋国际公馆二期') WHEN'${fine_username}' = 'WangJing' THEN comm_name IN('【乐山】澜山悦','【乐山】领地蘭台府') - ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} \ No newline at end of file + ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} + + +-- ====================================== +-- 数据集逻辑 +-- ====================================== + + +-- **************************************** +-- 创建人员: 杨坤安 +-- 创建日期: 2024-07-22 +-- 功 能: 帆软明细报表-项目明细弹窗 +-- 目 录: xianzuan>2_运营>项目明细弹窗.fvs +-- **************************************** +with one_to_many AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) + WHERE a.username = '${fine_username}' + ) +SELECT + A.ManageKindName , -- 管理性质名称 【项目归属】 + A.Province,-- 省 + A.City,-- 市 + A.Citylevel,-- 城市级别 + A.ManageStage,-- 项目状态 + A.TakeOverTime,-- 交付时间 + A.CommFrom,-- 项目来源 + A.DevSubject,-- 项目开发商名称 + A.CommAddress,-- 项目地址 + CASE + WHEN ProjectFloorPlan IS NULL + OR JSON_EXTRACT( JSON_EXTRACT( cast( A.ProjectFloorPlan AS JSON ), '$[0]' ), '$.FileName' ) IS NULL THEN'否' + WHEN JSON_EXTRACT( JSON_EXTRACT( cast( A.ProjectFloorPlan AS JSON ), '$[0]' ), '$.FileName' ) IS NOT NULL THEN'是' + END AS IS_UPLOAD,-- 是否有上传项目平面图 -- 项目平面图 + ( A.FloorArea + A.UndergroundArea ) AS TotalArea,-- 建筑总面积 + A.FloorArea,-- 地上面积 + A.UndergroundArea,-- 地下面积 + A.GreenArea,-- 绿化面积 + A.ContractTerm, + A.PropertyMgrEntrustType, + CASE + WHEN A.IsContractFiled = '1' THEN'是' ELSE '否' + END AS 是否办理合同备案, + A.ProjectDeliverySituation, + D.UnsoldParkingCount, + IF( A.PedEntrExitsCount = 0 OR PedEntrExitsCount IS NULL, '-', PedEntrExitsCount ) AS PedEntrExitsCount, + IF( A.CarEntrExitsCount = 0 OR CarEntrExitsCount IS NULL, '-', CarEntrExitsCount ) AS CarEntrExitsCount, + IF( A.MixedEntrExitsCount = 0 OR MixedEntrExitsCount IS NULL, '-', MixedEntrExitsCount ) AS MixedEntrExitsCount, + IF( A.GuardedEntrExitsCount = 0 OR GuardedEntrExitsCount IS NULL, '-', GuardedEntrExitsCount ) AS GuardedEntrExitsCount, + IF( A.MonitoringRoomCount = 0 OR MonitoringRoomCount IS NULL, '-', MonitoringRoomCount ) AS MonitoringRoomCount, + + -- TotalEntrExitsCount = PedEntrExitsCount + CarEntrExitsCount +MixedEntrExitsCount + IF( A.PedEntrExitsCount = 0 OR PedEntrExitsCount IS NULL, '-', PedEntrExitsCount ) + + IF( A.CarEntrExitsCount = 0 OR CarEntrExitsCount IS NULL, '-', CarEntrExitsCount ) + + IF( A.MixedEntrExitsCount = 0 OR MixedEntrExitsCount IS NULL, '-', MixedEntrExitsCount ) AS TotalEntrExitsCount, + + A.IsMonRoomMergedToGate, + A.ContractArea,-- 合同面积 【建筑面积】 + A.TakeOverArea,-- 接管面积 【合约面积】 + A.ManageContractArea ManageContractArea,-- 管理口径合同面积 【在管面积】 + A.StateName AS StateName,-- 业态 【项目业态】 + A.ContractName,-- 合同类型 + A.GetMethod,-- 项目获取渠道 + A.ContractPartyName,-- 合同对方名称 + CASE + WHEN A.IsSetCommittee = '1' THEN'是' ELSE '否' + END AS 是否成立委员会,-- 是否已成立业主委员会 + A.CommitteeTime,-- 业委会成立时间 + A.ChargeMode, + CONCAT(DATE_FORMAT(A.CommitteeTermStartDate, '%Y-%m-%d' ) , ' 至 ',DATE_FORMAT(A.CommitteeTermEndDate, '%Y-%m-%d' )) AS 任职天数,-- 任职时间 + C.room_num AS room_num,-- 总户数 + B.organ_name AS organ_name,-- erp片区名称 + B.comm_name AS comm_name,-- erp项目名称 + C.`已售面积`, + C.`未售面积`, + D.`已售车位`, + C.`已交付户数`, + C.`已接房数`, + C.`正在装修户数`, + C.`已完成装修户数`, + C.`已完成装修未入住`, + C.`已完成装修已入住`, + (C.`已完成装修已入住` / C.`已交付户数` ) AS 入住率, + (C.`已完成装修户数` / C.`已交付户数` ) AS 装修率, + C.收费面积,-- 收费面积 + A.签约时间, + G.住宅高层, + G.住宅多层, + G.别墅, + G.联排物业服务费, + G.叠拼物业服务费, + G.洋房物业费, + G.公寓物业服务费, + G.商铺物业服务费, + G.写字楼物业服务费, + G.幼儿园物业服务费, + G.厂区物业服务费, + G.酒店物业服务费, + G.车位管理物业服务费, + G.车位月租费用 +FROM + ( + SELECT + T.* + ,max(T.GetTime) OVER(PARTITION BY T.CommId)AS 签约时间 + FROM + ( + SELECT + * + ,row_number() OVER(PARTITION BY CommId ORDER BY GetTime DESC) AS RK + FROM dw.dim_project_base_info_d -- 项目维度表 + )T + WHERE T.RK = 1 + ) A + JOIN + ( + SELECT + organ_code, -- erp片区id + organ_name, -- erp片区名称 + comm_id, -- erp项目id + comm_name -- erp项目名称 + FROM dw.dim_organ_mapping -- 片区项目映射维度表 + WHERE comm_id IS NOT NULL + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%禁用%' + AND length( comm_id ) != 0 + + ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} +-- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}') IS NOT NULL + THEN comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} + END + + GROUP BY + organ_code, -- erp片区id + organ_name, -- erp片区名称 + comm_id, -- erp项目id + comm_name -- erp项目名称 + )B + ON A.CommId = B.comm_id + LEFT JOIN + ( + + SELECT + a.CommID + ,SUM(CASE WHEN a.roomstate <> 0 THEN 1 ELSE 0 END) AS room_num, -- 项目对应房间数量 + SUM( CASE WHEN a.roomstate IN ( '1', '4', '9', '10', '5', '6' ) THEN a.buildarea ELSE 0 END ) AS 已售面积, + SUM( CASE WHEN a.roomstate = '2' THEN a.buildarea ELSE 0 END ) AS 未售面积, + SUM( CASE WHEN a.roomstate NOT IN('0','2') THEN 1 ELSE 0 END ) AS 已交付户数, + SUM( CASE WHEN a.roomstate IN ( '4', '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS 已接房数, + SUM( CASE WHEN a.roomstate = '4' THEN 1 ELSE 0 END ) AS 正在装修户数, + SUM( CASE WHEN a.roomstate IN ( '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修户数, + SUM( CASE WHEN a.roomstate = '5' THEN 1 ELSE 0 END ) AS 已完成装修未入住, + SUM( CASE WHEN a.roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修已入住, + SUM(b.CalcArea) AS 收费面积 + FROM + ( + SELECT + * + FROM dw.dim_room_d + )a + LEFT JOIN + ( + SELECT + b1.CommId AS CommId + ,b1.RoomID AS RoomID + ,SUM(CalcArea) AS CalcArea + FROM + ( + SELECT + CommId + , CalcArea + , RoomID + FROM ods_erp_tb_hspr_coststansetting_d + WHERE RoomID <> '0' + GROUP BY CommId, CalcArea, RoomID + )b1 + GROUP BY b1.CommId,b1.RoomID + )b + ON a.CommID = b.CommId + AND a.RoomID = b.RoomID + GROUP BY CommID + )C + ON A.CommId = C.CommID + LEFT JOIN + ( + SELECT + CommID + ,SUM( CASE WHEN ParkingState IN ( '0001', '0003' ) THEN 1 ELSE 0 END ) AS 已售车位 + ,SUM(CASE WHEN ParkingState IN ( '0002', '0004' ) THEN 1 ELSE 0 END) AS UnsoldParkingCount + FROM ods_erp_tb_hspr_parking_d + WHERE IsDelete = '0' + GROUP BY + CommID + )D + ON A.COMMID = D.COMMID + LEFT JOIN + ( + SELECT + A.CommId + -- 住宅高层 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName IN ('高层物业服务费', '电梯电费', '公共能耗费') THEN ROUND(ROUND(B.StanAmount,2),2) END),',','\n'),'-') AS 住宅高层 + -- 住宅多层 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName IN ('多层物业服务费', '公共能耗费') THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 住宅多层 + -- 别墅 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName IN ('别墅物业服务费', '公共能耗费') THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 别墅 + -- 联排物业服务费 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%联排%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 联排物业服务费 + -- 叠拼物业服务费 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%叠拼%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 叠拼物业服务费 + -- 洋房物业费 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%洋房%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 洋房物业费 + -- 公寓物业服务费 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%公寓%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 公寓物业服务费 + -- 商铺物业服务费 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%商铺%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 商铺物业服务费 + -- 写字楼物业服务费 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%写字楼%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 写字楼物业服务费 + -- 幼儿园物业服务费 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%幼儿园%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 幼儿园物业服务费 + -- 厂区物业服务费 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%厂区%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 厂区物业服务费 + -- 酒店物业服务费 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName LIKE '%酒店%' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 酒店物业服务费 + -- 车位管理物业服务费 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName IN('车位管理物业服务费','车位物业服务费') THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 车位管理物业服务费 + -- 车位月租费用 + ,IFNULL(REPLACE(group_concat(CASE WHEN B.CostName = '车位月租' THEN ROUND(B.StanAmount,2) END),',','\n'),'-') AS 车位月租费用 + + FROM + ( + + SELECT + DISTINCT + CommID + ,CostID + ,StanID + FROM dim_bind_cost_stan_detail_d -- 绑定的收费标准明细 +-- WHERE CommID = '214330' + )A + LEFT JOIN + ( + + SELECT + B1.CommID AS CommID + ,B1.COSTID AS COSTID + ,B1.StanID AS StanID + ,B1.StanAmount AS StanAmount + ,B2.COSTNAME AS COSTNAME + FROM + ( + SELECT + CommID + ,COSTID + ,StanID + ,StanAmount + FROM dim_cost_stand_d -- 小区收费标准 + WHERE StanAmount <> 0 + )B1 + LEFT JOIN + ( + + SELECT + distinct + COMMID + ,COSTID + ,COSTNAME + FROM dim_costitem_d -- 项目上的费用名称 + )B2 + ON B1.CommID = B2.COMMID + AND B1.CostID = B2.COSTID + )B + ON A.CommID = B.COMMID + AND A.CostID = B.COSTID + AND A.StanID = B.StanID + GROUP BY + A.CommId + )G + ON A.COMMID = G.COMMID +; \ No newline at end of file From dec09786d4904a70d5f32aa6f260b48c0531fe44 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Wed, 11 Sep 2024 11:34:29 +0800 Subject: [PATCH 63/89] =?UTF-8?q?=E8=B4=A2=E5=8A=A1=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E8=A1=A8=E6=94=B6=E7=BC=B4=E7=8E=87=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- finereport/xiazuan/1_finance/1_收缴下钻.sql | 57 +++++++++++---------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/finereport/xiazuan/1_finance/1_收缴下钻.sql b/finereport/xiazuan/1_finance/1_收缴下钻.sql index 0262f4d..c304e1d 100644 --- a/finereport/xiazuan/1_finance/1_收缴下钻.sql +++ b/finereport/xiazuan/1_finance/1_收缴下钻.sql @@ -8,48 +8,53 @@ FROM dim_organ_mapping WHERE 1=1 ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} - -- dic_片区 SELECT DISTINCT organ_code AS 片区id, organ_name AS 片区名称 -FROM dim_organ_mapping - +FROM dws_finance_fees_serial_m +where 1=1 and organ_code is not null + and organ_name not in ('东湖商管','领悦总部','演示机构') + ${if(GETUSERDEPARTMENTS(2)="领悦集团总部","","and organ_name = '"+GETUSERDEPARTMENTS(2)+"'")} -- dict_费用类型 -select distinct ParentCostCode, ParentCostName +select distinct ParentCostCode, case when ParentCostCode = '0008' then '代收代缴水电费' else ParentCostName end ParentCostName from dws_finance_fees_serial_m +where ParentCostCode in ('0001','0007','0008') order by ParentCostCode asc -- report_收缴率 -select - ${if(len(p_area) == 0,"a.organ_code code, a.organ_name name,","a.comm_id code, a.comm_name name,")} - a.ym, ParentCostCode, ParentCostName - , (pr_paid_cu_amt + cu_paid_cu_amt + pr_exempt_cu_amt + cu_exempt_cu_amt)/10000 cu_paid_amt - , (cu_receivable_amt + pr_exempt_cu_amt + cu_exempt_cu_amt)/10000 cu_receivable_amt - , (- cu_paid_pr_amt + cu_offset_pr_amt)/10000 pr_paid_amt - , (pr_total_receivable_amt + pr_total_received_amt + cu_early_exempt_pr_amt + cu_exempt_pr_amt)/10000 pr_receivable_amt - , case when a.ParentCostCode = '0001' then b.index_dq_target else 0 end cu_coll_rate_target - , case when a.ParentCostCode = '0001' then b.index_wq_target else 0 end pr_coll_rate_target - , case when a.ParentCostCode = '0008' then b.index_sd_target - when a.ParentCostCode = '0007' then b.index_dj_target else 0 end total_coll_rate_target -from dws_finance_fees_serial_m a - left join ods_finance_collection_target_area b - on a.organ_code = b.organ_code and a.ym = b.ym - left join ods_finance_collection_target_project c - on a.comm_id = c.comm_id and a.ym = c.ym -where 1=1 - ${if(len(p_startdate) == 0,"","and a.ym = '" + p_startdate + "'")} - ${if(len(p_feestype) == 0,"","and a.ParentCostCode = '" + p_feestype+ "'")} - ${if(len(p_area) == 0,"","and a.organ_code = '" + p_area+ "'")} -; - +select * from ( + select + ${if(len(p_area) == 0,"a.organ_code code, a.organ_name name,","a.comm_id code, a.comm_name name,")} + a.ym, ParentCostCode, ParentCostName + , (ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0))/10000 cu_paid_amt + , (ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0))/10000 cu_receivable_amt + , (- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))/10000 pr_paid_amt + , (ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0))/10000 pr_receivable_amt + , case when a.ParentCostCode = '0001' then b.index_dq_target else 0 end cu_coll_rate_target + , case when a.ParentCostCode = '0001' then b.index_wq_target else 0 end pr_coll_rate_target + , case when a.ParentCostCode = '0008' then b.index_sd_target + when a.ParentCostCode = '0007' then b.index_dj_target else 0 end total_coll_rate_target + from dws_finance_fees_serial_m a + left join ods_finance_collection_target_area b + on a.organ_code = b.organ_code and a.ym = b.ym + left join ods_finance_collection_target_project c + on a.comm_id = c.comm_id and a.ym = c.ym + where 1=1 and a.organ_code is not null + and a.organ_name not in ('东湖商管','领悦总部','演示机构') and a.comm_name not like '%天富%' + ${if(len(p_startdate) == 0,"","and a.ym = '" + p_startdate + "'")} + ${if(len(p_feestype) == 0,"","and a.ParentCostCode = '" + p_feestype+ "'")} + -- ${if(len(p_area) == 0,"","and a.organ_code = '" + p_area+ "'")} + ${IF(LEN(p_area)>0," AND a.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and a.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + ) a where not (cu_paid_amt=0 and cu_receivable_amt=0 and pr_paid_amt=0 and pr_receivable_amt = 0) -- report_收缴率目标 From 81bf975d880145e1b85abf6bdecb9cad199cb977 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Wed, 11 Sep 2024 11:36:32 +0800 Subject: [PATCH 64/89] =?UTF-8?q?=E6=94=B6=E7=BC=B4=E4=B8=8B=E9=92=BB?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E9=9B=86=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- finereport/xiazuan/1_finance/1_收缴下钻.sql | 82 ++++++++++++++++----- 1 file changed, 65 insertions(+), 17 deletions(-) diff --git a/finereport/xiazuan/1_finance/1_收缴下钻.sql b/finereport/xiazuan/1_finance/1_收缴下钻.sql index c304e1d..6459101 100644 --- a/finereport/xiazuan/1_finance/1_收缴下钻.sql +++ b/finereport/xiazuan/1_finance/1_收缴下钻.sql @@ -27,6 +27,20 @@ where ParentCostCode in ('0001','0007','0008') order by ParentCostCode asc + +-- report_多经收缴情况 +SELECT + ${if(len(p_area) == 0,"organ_code code, organ_name name,","comm_id code, comm_name name,")} + `year_month`, index_type, index_receivable, index_receipts, index_not_receipts, collection_rate, update_user, update_time +FROM ods_caiwu_profit +where 1=1 +-- ${if(len(p_area) == 0,"","and organ_code = '" + p_area+ "'")} + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(len(p_startdate) == 0,"","and `year_month` = '" + replace(p_startdate,"-","") + "'")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + + + -- report_收缴率 @@ -58,13 +72,12 @@ select * from ( -- report_收缴率目标 - select organ_code code , organ_name name , ym - , index_dq_target - , index_wq_target + , ${IF(p_feestype = '0001',"index_dq_target",IF(p_feestype = "0007","''","''"))} AS index_dq_target + , ${IF(p_feestype = '0001',"index_wq_target",IF(p_feestype = "0007","''","''"))} AS index_wq_target , index_sd_target , index_dj_target , index_ac_target_dq @@ -78,8 +91,8 @@ select comm_id code , comm_name name , ym - , index_dq_target - , index_wq_target + , ${IF(p_feestype = '0001',"index_dq_target",IF(p_feestype = "0007","''","''"))} AS index_dq_target + , ${IF(p_feestype = '0001',"index_wq_target",IF(p_feestype = "0007","''","''"))} AS index_wq_target , index_sd_target , index_dj_target , index_ac_target_dq @@ -88,21 +101,56 @@ select from ods_finance_collection_target_project where 1=1 ${if(len(p_startdate) == 0,"","and ym = '" + p_startdate + "'")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + +-- report_物业费收缴总目标 + +select organ_code, ym, index_dq_target, index_wq_target from ods_finance_collection_target_area where organ_code = '5501' + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} -- report_中科目收缴率 select - b.organ_code, b.organ_name, b.comm_id, b.comm_name, ym - ${if(len(p_feestype) == 0,", ParentCostCode CostCode, ParentCostName CostName",", MiddleCostCode CostCode, MiddleCostName CostName")} - , (pr_paid_cu_amt + cu_paid_cu_amt + pr_exempt_cu_amt + cu_exempt_cu_amt)/10000 cu_paid_amt - , (cu_receivable_amt + pr_exempt_cu_amt + cu_exempt_cu_amt)/10000 cu_receivable_amt - , (- cu_paid_pr_amt + cu_offset_pr_amt)/10000 pr_paid_amt - , (pr_total_receivable_amt + pr_total_received_amt + cu_early_exempt_pr_amt + cu_exempt_pr_amt)/10000 pr_receivable_amt -from dwd_finance_fees_serial_d a - inner 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 + CostName + , sum((ifnull(cu_receivable_amt,0) - ifnull(cu_paid_amt,0)) + (ifnull(pr_receivable_amt,0) - ifnull(pr_paid_amt,0))) owed_amt +from ( + select + b.organ_code, b.organ_name, b.comm_id, b.comm_name, ym + ${if(len(p_feestype) == 0,", ParentCostCode CostCode, ParentCostName CostName",", MiddleCostCode CostCode, MiddleCostName CostName")} + , (ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0))/10000 cu_paid_amt + , (ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0))/10000 cu_receivable_amt + , (- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))/10000 pr_paid_amt + , (ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0))/10000 pr_receivable_amt + from dwd_finance_fees_serial_d a + left join( + select a.CommID comm_id, a.CommName comm_name, b.OrganCode organ_code, b.OrganName organ_name from ods_erp_tb_hspr_community_d a + left join ( + select * from ods_erp_tb_sys_organ_d + where length(OrganCode) = 4 + ) b + on left(a.OrganCode,4) = b.OrganCode + ) b + on a.commid = b.comm_id + where 1=1 + and ((a.ParentCostCode = '0008' and a.MiddleCostCode in ('00080001','00080002','00080003','00080004','00080005','00080006','00080007','00080008','00080017','00080018','00080019','00080022','00080023','00080024','00080027','00080028','00080032','00080035')) or a.ParentCostCode = '0001') + and a.organ_name not in ('东湖商管','领悦总部','演示机构') and a.comm_name not like '%天富%' + ${if(len(p_startdate) == 0,"","and ym = '" + p_startdate + "'")} + ${if(len(p_feestype) == 0,"","and ParentCostCode = '" + p_feestype+ "'")} + -- ${if(len(p_area) == 0,"","and b.organ_code = '" + p_area+ "'")} + ${IF(LEN(p_area)>0," AND b.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(left(fine_role,2)=="项目","and a.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + ) a +where not (cu_paid_amt=0 and cu_receivable_amt=0 and pr_paid_amt=0 and pr_receivable_amt = 0) +group by CostName +union all +SELECT + index_type, sum(index_not_receipts) +FROM ods_caiwu_profit where 1=1 - ${if(len(p_startdate) == 0,"","and ym = '" + p_startdate + "'")} - ${if(len(p_feestype) == 0,"","and ParentCostCode = '" + p_feestype+ "'")} - ${if(len(p_area) == 0,"","and b.organ_code = '" + p_area+ "'")} \ No newline at end of file +-- ${if(len(p_area) == 0,"","and organ_code = '" + p_area+ "'")} + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${if(len(p_startdate) == 0,"","and `year_month` = '" + replace(p_startdate,"-","") + "'")} + ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +group by index_type +order by owed_amt desc \ No newline at end of file From ba66d1d7611a605f59dac54ff42e1365b2c3adb2 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Fri, 20 Sep 2024 15:32:01 +0800 Subject: [PATCH 65/89] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E8=A1=A8=E6=94=B6=E8=B4=B9=E9=9D=A2=E7=A7=AF?= =?UTF-8?q?=E5=8F=96=E6=95=B0=E8=A1=A8=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/dataSources.xml | 2 +- .idea/sqldialects.xml | 1 + finereport/xiazuan/2_operation/项目明细弹窗.sql | 4 +++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml index 3a8ea2e..c12c47d 100644 --- a/.idea/dataSources.xml +++ b/.idea/dataSources.xml @@ -5,7 +5,7 @@ mysql.8 true com.mysql.cj.jdbc.Driver - jdbc:mysql://172.18.96.11:3306 + jdbc:mysql://172.18.96.20:3306 diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index b5ccf60..28009e2 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -8,6 +8,7 @@ + diff --git a/finereport/xiazuan/2_operation/项目明细弹窗.sql b/finereport/xiazuan/2_operation/项目明细弹窗.sql index 1312101..e781d8b 100644 --- a/finereport/xiazuan/2_operation/项目明细弹窗.sql +++ b/finereport/xiazuan/2_operation/项目明细弹窗.sql @@ -581,7 +581,9 @@ AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = ' SUM( CASE WHEN a.roomstate IN ( '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修户数, SUM( CASE WHEN a.roomstate = '5' THEN 1 ELSE 0 END ) AS 已完成装修未入住, SUM( CASE WHEN a.roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修已入住, - SUM(b.CalcArea) AS 收费面积 + -- SUM(b.CalcArea) AS 收费面积 + -- 2024-09-20更新取数新逻辑:石老师确认 收费面积从房间表取 + SUM(a.CalcArea) AS 收费面积 FROM ( SELECT From ce85efa247c1b94918a583de317ae184ae6812d5 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Mon, 23 Sep 2024 10:27:44 +0800 Subject: [PATCH 66/89] =?UTF-8?q?=E9=A2=84=E8=AD=A6=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 2 + finereport/预警/片区预警数据.sql | 312 +++++++++++++++++++++++++++++++ finereport/预警/项目预警数据.sql | 246 ++++++++++++++++++++++++ finereport/预警/预警指标填报.sql | 17 ++ 4 files changed, 577 insertions(+) create mode 100644 finereport/预警/片区预警数据.sql create mode 100644 finereport/预警/项目预警数据.sql create mode 100644 finereport/预警/预警指标填报.sql diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 28009e2..53d4b7b 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -48,6 +48,8 @@ + + \ No newline at end of file diff --git a/finereport/预警/片区预警数据.sql b/finereport/预警/片区预警数据.sql new file mode 100644 index 0000000..1bd2ad6 --- /dev/null +++ b/finereport/预警/片区预警数据.sql @@ -0,0 +1,312 @@ +CREATE TABLE dim_early_warning_organ_d( + + organ_name VARCHAR(50) COMMENT '片区名称' + ,km_comple_rate DECIMAL(6,4) COMMENT '客满得分完成率' + ,ts_close_rate DECIMAL(6,4) COMMENT '投诉关闭率' + ,report_close_rate DECIMAL(6,4) COMMENT '报事关闭率' + ,cu_coll_comple_rate DECIMAL(6,4) COMMENT '当期收缴完成率' + ,pr_coll_comple_rate DECIMAL(6,4) COMMENT '往期收缴完成率' + ,total_coll_comple_rate DECIMAL(6,4) COMMENT '综合收缴完成率' + ,xing_revenue_rate DECIMAL(6,4) COMMENT '新零售收入完成率' + ,space_operate_rate DECIMAL(6,4) COMMENT '空间运营收入完成率' + ,meiju_revenue_rate DECIMAL(6,4) COMMENT '美居收入完成率(片区)' + ,rent_revenue_rate DECIMAL(6,4) COMMENT '资产租售收入完成率(片区)' + ,firth_revenue_rate DECIMAL(6,4) COMMENT '四大业务收入完成率(片区)' + ,payment_rate DECIMAL(6,4) COMMENT '回款率(片区)' + ,account_rate DECIMAL(6,4) COMMENT '销户率(片区)' + ,device_space_rate DECIMAL(6,4) COMMENT '设备空间巡查完成率' + ,water_electric_rate DECIMAL(6,4) COMMENT '水电费收缴率' +)COMMENT = '片区预警指标数据'; + + SELECT * FROM dim_early_warning_organ_d; +INSERT INTO dim_early_warning_organ_d +SELECT + T.organ_name AS organ_name + ,SUM(km_comple_rate) AS km_comple_rate -- 客满得分完成率 + ,SUM(ts_close_rate) AS ts_close_rate -- 投诉关闭率 + ,SUM(report_close_rate) AS report_close_rate -- 报事关闭率 + ,SUM(cu_coll_comple_rate) AS cu_coll_comple_rate -- 当期收缴完成率 + ,SUM(pr_coll_comple_rate) AS pr_coll_comple_rate -- 往期收缴完成率 + ,SUM(total_coll_comple_rate) AS total_coll_comple_rate -- 综合收缴完成率 + ,SUM(xing_revenue_rate) AS xing_revenue_rate -- 新零售收入完成率 + ,SUM(space_operate_rate) AS space_operate_rate -- 空间运营收入完成率 + ,SUM(meiju_revenue_rate) AS meiju_revenue_rate -- 美居收入完成率(片区) + ,SUM(rent_revenue_rate) AS rent_revenue_rate -- 资产租售收入完成率(片区) + ,SUM(firth_revenue_rate) AS firth_revenue_rate -- 四大业务收入完成率(片区) + ,SUM(payment_rate) AS payment_rate -- 回款率(片区) + ,SUM(account_rate) AS account_rate -- 销户率(片区) + ,SUM(device_space_rate) AS device_space_rate -- 设备空间巡查完成率 + ,SUM(water_electric_rate) AS water_electric_rate -- 水电费收缴率 +FROM + ( + SELECT + T1.organ_name AS organ_name + ,IF(IFNULL(T1.organ_target,0)=0,0,T2.index_mydf / T1.organ_target) AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS xing_revenue_rate -- 新零售收入完成率 + ,0 AS space_operate_rate -- 空间运营收入完成率 + ,0 AS meiju_revenue_rate -- 美居收入完成率(片区) + ,0 AS rent_revenue_rate -- 资产租售收入完成率(片区) + ,0 AS firth_revenue_rate -- 四大业务收入完成率(片区) + ,0 AS payment_rate -- 回款率(片区) + ,0 AS account_rate -- 销户率(片区) + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM + ( + SELECT + DISTINCT + organ_name -- 片区名称 + ,organ_target -- 目标得分 + FROM ods_wuye_satisfaction_target + WHERE yr = LEFT(CURRENT_DATE,4) + AND organ_target IS NOT NULL + )T1 + LEFT JOIN + ( + /*各片区得分*/ + SELECT + organ_name + ,SUM(IFNULL(index_mydf,0)) AS index_mydf + FROM ods_wuye_complaint_half_year + WHERE yr = LEFT(CURRENT_DATE,4) + AND t_quarter = '二季度' + -- AND t_quarter = CASE WHEN QUARTER(CURDATE()) = 1 THEN '一季度' + -- WHEN QUARTER(CURDATE()) = 2 THEN '二季度' + -- WHEN QUARTER(CURDATE()) = 3 THEN '三季度' + -- WHEN QUARTER(CURDATE()) = 4 THEN '四季度' END + -- + GROUP BY organ_name + )T2 + ON T1.organ_name = T2.organ_name + UNION ALL +-- 投诉关闭率/报事关闭率 + SELECT + organ_name AS organ_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,IF(IFNULL(sum(tousu_incident_num),0)=0,0,sum(tousu_close_incident_num) / sum(tousu_incident_num)) AS ts_close_rate -- 投诉关闭率 + ,IF(IFNULL(sum(incident_num),0)=0,0,sum(completed_incident_num - completed_not_close_incident_num) / sum(incident_num)) AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS xing_revenue_rate -- 新零售收入完成率 + ,0 AS space_operate_rate -- 空间运营收入完成率 + ,0 AS meiju_revenue_rate -- 美居收入完成率(片区) + ,0 AS rent_revenue_rate -- 资产租售收入完成率(片区) + ,0 AS firth_revenue_rate -- 四大业务收入完成率(片区) + ,0 AS payment_rate -- 回款率(片区) + ,0 AS account_rate -- 销户率(片区) + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM dws_estate_incident_info_m + WHERE incident_ym = date_format(current_date,'%Y%m') + GROUP BY + organ_name + UNION ALL +-- 收缴率 + SELECT + T1.organ_name AS organ_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,SUM(T1.cu_collection_rate) / SUM(T2.index_dq_target) AS cu_coll_comple_rate -- 当期收缴完成率 + ,SUM(T1.pr_collection_rate) / SUM(T2.index_wq_target) AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS xing_revenue_rate -- 新零售收入完成率 + ,0 AS space_operate_rate -- 空间运营收入完成率 + ,0 AS meiju_revenue_rate -- 美居收入完成率(片区) + ,0 AS rent_revenue_rate -- 资产租售收入完成率(片区) + ,0 AS firth_revenue_rate -- 四大业务收入完成率(片区) + ,0 AS payment_rate -- 回款率(片区) + ,0 AS account_rate -- 销户率(片区) + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM + ( + SELECT + organ_code + ,organ_name + ,sum(ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0)) / sum(ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0)) cu_collection_rate + ,sum((- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum(ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0)) pr_collection_rate + from dwd_finance_fees_serial_d + where ParentCostCode = '0001' + and ym = left(current_date,7) + and organ_name not in ('东湖商管','领悦总部','演示机构') + and comm_name not like '%天富%' + and comm_name not in('【喀什】融合国际新城','【贵阳】鹏淇·宏桥公园(撤场)') + GROUP BY + organ_code + ,organ_name + )T1 + LEFT JOIN + ( + select + organ_code + ,index_dq_target + ,index_wq_target + from ods_finance_collection_target_area + WHERE ym = left(current_date,7) + )T2 + ON T1.organ_code = T2.organ_code + GROUP BY + T1.organ_name + UNION ALL +-- 综合收缴率 + SELECT + T1.organ_name AS organ_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,SUM(T1.index_receipts) / SUM(T2.index_dj_target) AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS xing_revenue_rate -- 新零售收入完成率 + ,0 AS space_operate_rate -- 空间运营收入完成率 + ,0 AS meiju_revenue_rate -- 美居收入完成率(片区) + ,0 AS rent_revenue_rate -- 资产租售收入完成率(片区) + ,0 AS firth_revenue_rate -- 四大业务收入完成率(片区) + ,0 AS payment_rate -- 回款率(片区) + ,0 AS account_rate -- 销户率(片区) + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM + ( + SELECT + organ_code + ,organ_name + ,SUM(index_receivable) / SUM(index_receipts) AS index_receipts + FROM ods_caiwu_profit + -- where `year_month` = date_format(current_date,'%Y%m') + where `year_month` = '202408' + and comm_name not in('【喀什】融合国际新城','【贵阳】鹏淇·宏桥公园(撤场)') + GROUP BY + organ_code + ,organ_name + )T1 + LEFT JOIN + ( + select + organ_code + ,index_dj_target + from ods_finance_collection_target_area + WHERE ym = left(current_date,7) + )T2 + ON T1.organ_code = T2.organ_code + GROUP BY T1.organ_name +-- 收入完成率(片区) + UNION ALL + SELECT + organ_name AS organ_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,IFNULL(CASE WHEN SUM(CASE WHEN revenue_type = '创新' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) = 0 THEN 0 + ELSE SUM(CASE WHEN revenue_type = '创新' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) + / SUM(CASE WHEN revenue_type = '创新' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) + END,0) AS xing_revenue_rate -- 新零售收入完成率 + ,IFNULL(CASE WHEN SUM(CASE WHEN revenue_type = '附属' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) = 0 THEN 0 + ELSE SUM(CASE WHEN revenue_type = '附属' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) + / SUM(CASE WHEN revenue_type = '附属' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) + END,0) AS space_operate_rate -- 空间运营收入完成率 + ,IFNULL(CASE WHEN SUM(CASE WHEN revenue_type = '拎包' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) = 0 THEN 0 + ELSE SUM(CASE WHEN revenue_type = '拎包' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) + / SUM(CASE WHEN revenue_type = '拎包' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) + END,0) AS meiju_revenue_rate -- 美居收入完成率(片区) + ,IFNULL(CASE WHEN SUM(CASE WHEN revenue_type = '资产' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) = 0 THEN 0 + ELSE SUM(CASE WHEN revenue_type = '资产' AND business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) + / SUM(CASE WHEN revenue_type = '资产' AND business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) + END,0) AS rent_revenue_rate -- 资产租售收入完成率(片区) + ,IFNULL(CASE WHEN SUM(CASE WHEN business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) = 0 THEN 0 + ELSE SUM(CASE WHEN business_type = '收入' THEN COALESCE(revenue_value,0) ELSE 0 END) + / SUM(CASE WHEN business_type = '目标' THEN COALESCE(revenue_value,0) ELSE 0 END) + END,0) AS firth_revenue_rate -- 四大业务收入完成率(片区) + ,0 AS payment_rate -- 回款率(片区) + ,0 AS account_rate -- 销户率(片区) + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM dw.ods_innoveco_metrics_finish_d + WHERE business_type in('收入','目标') -- 业务类型 + AND YM = LEFT(current_date,7) + GROUP BY + organ_name + UNION ALL +-- 回款率/销户率 + SELECT + organ_name AS organ_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS xing_revenue_rate -- 新零售收入完成率 + ,0 AS space_operate_rate -- 空间运营收入完成率 + ,0 AS meiju_revenue_rate -- 美居收入完成率(片区) + ,0 AS rent_revenue_rate -- 资产租售收入完成率(片区) + ,0 AS firth_revenue_rate -- 四大业务收入完成率(片区) + ,SUM(IFNULL(payment_coll_amt,0)) / SUM(IFNULL(trans_amt,0)) AS payment_rate -- 回款率(片区) + ,SUM(IFNULL(payment_coll_num,0)) / SUM(IFNULL(trans_household_num,0)) AS account_rate -- 销户率(片区) + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM dws_law_tran_coll_d + WHERE ymd <= CURRENT_DATE() + GROUP BY + organ_name + UNION ALL +-- 设备空间巡查完成率 + SELECT + organ_name AS organ_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS xing_revenue_rate -- 新零售收入完成率 + ,0 AS space_operate_rate -- 空间运营收入完成率 + ,0 AS meiju_revenue_rate -- 美居收入完成率(片区) + ,0 AS rent_revenue_rate -- 资产租售收入完成率(片区) + ,0 AS firth_revenue_rate -- 四大业务收入完成率(片区) + ,0 AS payment_rate -- 回款率(片区) + ,0 AS account_rate -- 销户率(片区) + ,SUM(task_finish_num) / SUM(task_num) AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM dws_engine_equipment_inspect_task_m + where task_ym = date_format(current_date,'%Y%m') + GROUP BY + organ_name + UNION ALL +-- 水电费收缴率 + SELECT + organ_name AS organ_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS xing_revenue_rate -- 新零售收入完成率 + ,0 AS space_operate_rate -- 空间运营收入完成率 + ,0 AS meiju_revenue_rate -- 美居收入完成率(片区) + ,0 AS rent_revenue_rate -- 资产租售收入完成率(片区) + ,0 AS firth_revenue_rate -- 四大业务收入完成率(片区) + ,0 AS payment_rate -- 回款率(片区) + ,0 AS account_rate -- 销户率(片区) + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,sum((ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0))+(- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum((ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0))+(ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0))) AS water_electric_rate -- 水电费收缴率 + FROM dwd_finance_fees_serial_d + WHERE ParentCostCode = '0008' + AND MiddleCostCode in ('00080001','00080002','00080003','00080004','00080005','00080006','00080007','00080008','00080017','00080018','00080019','00080022','00080023','00080024','00080027','00080028','00080032','00080035') + AND ym = LEFT(current_date,7) + GROUP BY organ_name + )T +JOIN (SELECT organ_name FROM dim_organ_mapping GROUP BY organ_name)t1 ON T.organ_name = t1.organ_name +GROUP BY T.organ_name +; \ No newline at end of file diff --git a/finereport/预警/项目预警数据.sql b/finereport/预警/项目预警数据.sql new file mode 100644 index 0000000..5b35a54 --- /dev/null +++ b/finereport/预警/项目预警数据.sql @@ -0,0 +1,246 @@ +DROP TABLE dim_early_warning_comm_d; +-- 项目预警指标数据 +CREATE TABLE dim_early_warning_comm_d( + organ_code VARCHAR(50) COMMENT '片区id' + ,organ_name VARCHAR(50) COMMENT '片区名称' + ,comm_id VARCHAR(50) COMMENT '项目id' + ,comm_name VARCHAR(50) COMMENT '项目名称' + ,km_comple_rate DECIMAL(6,4) COMMENT '客满得分完成率' + ,ts_close_rate DECIMAL(6,4) COMMENT '投诉关闭率' + ,report_close_rate DECIMAL(6,4) COMMENT '报事关闭率' + ,cu_coll_comple_rate DECIMAL(6,4) COMMENT '当期收缴完成率' + ,pr_coll_comple_rate DECIMAL(6,4) COMMENT '往期收缴完成率' + ,total_coll_comple_rate DECIMAL(6,4) COMMENT '综合收缴完成率' + ,device_space_rate DECIMAL(6,4) COMMENT '设备空间巡查完成率' + ,water_electric_rate DECIMAL(6,4) COMMENT '水电费收缴率' +)COMMENT = '项目预警指标数据'; + +SELECT * FROM dim_early_warning_comm_d; +INSERT INTO dim_early_warning_comm_d +SELECT + T.organ_code AS organ_code + ,T.organ_name AS organ_name + ,T.comm_id AS comm_id + ,T.comm_name AS comm_name + ,SUM(km_comple_rate) AS km_comple_rate -- 客满得分完成率 + ,SUM(ts_close_rate) AS ts_close_rate -- 投诉关闭率 + ,SUM(report_close_rate) AS report_close_rate -- 报事关闭率 + ,SUM(cu_coll_comple_rate) AS cu_coll_comple_rate -- 当期收缴完成率 + ,SUM(pr_coll_comple_rate) AS pr_coll_comple_rate -- 往期收缴完成率 + ,sum(total_coll_comple_rate) AS total_coll_comple_rate + ,SUM(device_space_rate) AS device_space_rate -- 设备空间巡查完成率 + ,SUM(water_electric_rate) AS water_electric_rate -- 水电费收缴率 +FROM + ( + SELECT + T1.organ_code AS organ_code + ,T1.organ_name AS organ_name + ,T1.comm_id AS comm_id + ,T1.comm_name AS comm_name + ,IF(IFNULL(T1.comm_target,0)=0,0,(IFNULL(T2.index_dc_myddf,0) / IFNULL(T1.comm_target,0))) AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM + ( + SELECT + organ_code + ,organ_name -- 片区名称 + ,comm_id + ,comm_name -- 项目名称 + ,comm_target -- 项目目标得分 + FROM ods_wuye_satisfaction_target + WHERE yr = LEFT(CURRENT_DATE,4) + AND comm_name NOT LIKE '%案场%' + AND comm_name NOT LIKE '%撤场%' + AND comm_name NOT LIKE '%禁用%' + -- AND comm_type = '' + )T1 + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,index_dc_myddf + FROM ods_wuye_complaint + WHERE yr = LEFT(CURRENT_DATE,4) + AND jd = '二季度' + -- AND jd = CASE WHEN QUARTER(CURDATE()) = 1 THEN '一季度' + -- WHEN QUARTER(CURDATE()) = 2 THEN '二季度' + -- WHEN QUARTER(CURDATE()) = 3 THEN '三季度' + -- WHEN QUARTER(CURDATE()) = 4 THEN '四季度' EN + )T2 + ON T1.organ_code = T2.organ_code + AND T1.comm_id = T2.comm_id + UNION ALL +-- 投诉关闭率/报事关闭率 + SELECT + organ_code AS organ_code + ,organ_name AS organ_name + ,comm_id AS comm_id + ,comm_name AS comm_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,IF(IFNULL(sum(tousu_incident_num),0)=0,0,sum(tousu_close_incident_num) / sum(tousu_incident_num)) AS ts_close_rate -- 投诉关闭率 + ,IF(IFNULL(sum(incident_num),0)=0,0,sum(completed_incident_num - completed_not_close_incident_num) / sum(incident_num)) AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM dws_estate_incident_info_m + WHERE incident_ym = date_format(current_date,'%Y%m') + GROUP BY + organ_name,comm_name,comm_id,organ_code + UNION ALL +-- 收缴率 + SELECT + T1.organ_code AS organ_code + ,T1.organ_name AS organ_name + ,T1.commid AS comm_id + ,T1.comm_name AS comm_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,SUM(T1.cu_collection_rate) / SUM(T2.index_dq_target) AS cu_coll_comple_rate -- 当期收缴完成率 + ,SUM(T1.pr_collection_rate) / SUM(T2.index_wq_target) AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM + ( + SELECT + commid + ,comm_name + ,organ_code + ,organ_name + ,sum(ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0)) / sum(ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0)) cu_collection_rate + ,sum((- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum(ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0)) pr_collection_rate + from dwd_finance_fees_serial_d + where ParentCostCode = '0001' + and ym = left(current_date,7) + and organ_name not in ('东湖商管','领悦总部','演示机构') + and comm_name not like '%天富%' + and comm_name not in('【喀什】融合国际新城','【贵阳】鹏淇·宏桥公园(撤场)') + GROUP BY + organ_code + ,organ_name + ,commid + ,comm_name + )T1 + LEFT JOIN + ( + select + comm_id + ,comm_name + ,organ_code + ,organ_name + ,index_dq_target + ,index_wq_target + from ods_finance_collection_target_project + WHERE ym = left(current_date,7) + )T2 + ON T1.organ_code = T2.organ_code + AND T1.commid = T2.comm_id + GROUP BY + T1.organ_name,T1.comm_name,T1.commid,T1.organ_code + UNION ALL +-- 综合收缴率 + SELECT + T1.organ_code AS organ_code + ,T1.organ_name AS organ_name + ,T1.comm_id AS comm_id + ,T1.comm_name AS comm_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,SUM(T1.index_receipts) / SUM(T2.index_dj_target) AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,SUM(index_receivable) / SUM(index_receipts) AS index_receipts + FROM ods_caiwu_profit + -- where `year_month` = date_format(current_date,'%Y%m') + where `year_month` = '202408' + and comm_name not in('【喀什】融合国际新城','【贵阳】鹏淇·宏桥公园(撤场)') + GROUP BY + organ_code + ,organ_name + ,comm_id + ,comm_name + )T1 + LEFT JOIN + ( + select + organ_code + ,comm_id + ,index_dj_target + from ods_finance_collection_target_project + WHERE ym = left(current_date,7) + )T2 + ON T1.organ_code = T2.organ_code + AND T1.comm_id = T2.comm_id + GROUP BY + T1.organ_code,T1.organ_name,T1.comm_id ,T1.comm_name + UNION ALL +-- 设备空间巡查完成率 + SELECT + organ_code AS organ_code + ,organ_name AS organ_name + ,comm_id AS comm_id + ,comm_name AS comm_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,SUM(task_finish_num) / SUM(task_num) AS device_space_rate -- 设备空间巡查完成率 + ,0 AS water_electric_rate -- 水电费收缴率 + FROM dws_engine_equipment_inspect_task_m + where task_ym = date_format(current_date,'%Y%m') + GROUP BY + organ_name + ,organ_code + ,comm_id + ,comm_name + UNION ALL +-- 水电费收缴率 + SELECT + organ_code AS organ_code + ,organ_name AS organ_name + ,commid AS comm_id + ,comm_name AS comm_name + ,0 AS km_comple_rate -- 客满得分完成率 + ,0 AS ts_close_rate -- 投诉关闭率 + ,0 AS report_close_rate -- 报事关闭率 + ,0 AS cu_coll_comple_rate -- 当期收缴完成率 + ,0 AS pr_coll_comple_rate -- 往期收缴完成率 + ,0 AS total_coll_comple_rate -- 综合收缴完成率 + ,0 AS device_space_rate -- 设备空间巡查完成率 + ,sum((ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0))+(- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum((ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0))+(ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0))) AS water_electric_rate -- 水电费收缴率 + FROM dwd_finance_fees_serial_d + WHERE ParentCostCode = '0008' + AND MiddleCostCode in ('00080001','00080002','00080003','00080004','00080005','00080006','00080007','00080008','00080017','00080018','00080019','00080022','00080023','00080024','00080027','00080028','00080032','00080035') + AND ym = LEFT(current_date,7) + GROUP BY organ_name,organ_code,commid,comm_name + )T JOIN (SELECT organ_code,comm_id FROM dim_organ_mapping GROUP BY organ_code,comm_id)t1 ON T.comm_id = t1.comm_id and T.organ_code = t1.organ_code + +GROUP BY T.organ_code + ,T.organ_name + ,T.comm_id + ,T.comm_name +; \ No newline at end of file diff --git a/finereport/预警/预警指标填报.sql b/finereport/预警/预警指标填报.sql new file mode 100644 index 0000000..1be00b8 --- /dev/null +++ b/finereport/预警/预警指标填报.sql @@ -0,0 +1,17 @@ +DROP TABLE ods_index_early_warning; +CREATE TABLE ods_index_early_warning( + index_name VARCHAR(50) COMMENT '指标名称' + ,comm_organ VARCHAR(50) COMMENT '项目/片区' + ,index_value DECIMAL(6,4) COMMENT '预警值' + ,mang_organ VARCHAR(100) COMMENT '角色' + ,update_by VARCHAR(50) COMMENT '更新人' + ,update_time TIMESTAMP COMMENT '更新时间' +)COMMENT = '指标预警值填报'; + + +SELECT + index_name -- 指标名称 + ,comm_organ -- 项目/片区 + ,index_value -- 预警值 + ,mang_organ -- 角色 +FROM ods_index_early_warning \ No newline at end of file From c22268c7eb7a0eddf836c3b8914a50243f4f4eff Mon Sep 17 00:00:00 2001 From: yangkunan Date: Mon, 23 Sep 2024 14:56:35 +0800 Subject: [PATCH 67/89] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=94=B6=E8=B4=B9=E9=9D=A2=E7=A7=AF=E9=80=BB?= =?UTF-8?q?=E8=BE=91=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- finereport/xiazuan/2_operation/项目明细弹窗.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/finereport/xiazuan/2_operation/项目明细弹窗.sql b/finereport/xiazuan/2_operation/项目明细弹窗.sql index e781d8b..e7a7f4d 100644 --- a/finereport/xiazuan/2_operation/项目明细弹窗.sql +++ b/finereport/xiazuan/2_operation/项目明细弹窗.sql @@ -583,7 +583,7 @@ AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = ' SUM( CASE WHEN a.roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修已入住, -- SUM(b.CalcArea) AS 收费面积 -- 2024-09-20更新取数新逻辑:石老师确认 收费面积从房间表取 - SUM(a.CalcArea) AS 收费面积 + SUM(CASE WHEN a.roomstate IS NOT NULL AND a.roomstate <> '' THEN a.CalcArea ELSE 0 END) AS 收费面积 FROM ( SELECT From 5ad4765d318fb206e32871910b84242b76f7c8e4 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 24 Sep 2024 12:38:32 +0800 Subject: [PATCH 68/89] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 3 + .../dws_operation_subcompany_plan_level_d.sql | 7 +- .../xiazuan/2_operation/未完成计划明细.sql | 105 ++++++++++++++++++ .../xiazuan/2_operation/计划到期明细.sql | 61 +++++++--- finereport/xiazuan/权责亏损项目明细.sql | 32 ++++++ .../问题修复/计划到期明细组织架构为空.sql | 90 +++++++++++++++ 6 files changed, 278 insertions(+), 20 deletions(-) create mode 100644 finereport/xiazuan/2_operation/未完成计划明细.sql create mode 100644 finereport/xiazuan/权责亏损项目明细.sql create mode 100644 finereport/问题修复/计划到期明细组织架构为空.sql diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 53d4b7b..de6baaf 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -26,6 +26,7 @@ + @@ -38,6 +39,7 @@ + @@ -48,6 +50,7 @@ + diff --git a/dw/dws/dws_operation_subcompany_plan_level_d.sql b/dw/dws/dws_operation_subcompany_plan_level_d.sql index 5c9c04b..708aaaa 100644 --- a/dw/dws/dws_operation_subcompany_plan_level_d.sql +++ b/dw/dws/dws_operation_subcompany_plan_level_d.sql @@ -1,5 +1,5 @@ select - left(a.start_date,7) ym + left(a.end_date,7) ym , b.subcompanyid1 subcompanyid , c.subcompanyname , c.supsubcomid @@ -7,7 +7,7 @@ select , count(*) plan_num , count(plan_name) plan_adjust_num , sum(case when plan_status = 2 then 1 else 0 end) plan_cancel_num - , sum(case when plan_status = 6 then 1 else 0 end) plan_exempt_assess_num + , sum(case when plan_status = 7 then 1 else 0 end) plan_exempt_assess_num , sum(case when plan_status = 4 then 1 else 0 end) plan_incomplete_num , sum(case when left(start_date,7) = left(input_date,7) then 1 else 0 end) plan_thism_num , sum(case when plan_status = 0 then 1 else 0 end) plan_in_progress_num @@ -33,8 +33,9 @@ from ( on b.subcompanyid1 = c.id left join (select distinct plan_name from dwd_operations_plan_adjust_info_d) d on a.id = d.plan_name +WHERE left(a.end_date,7) = '2024-09' group by - left(a.start_date,7) + left(a.end_date,7) , b.subcompanyid1 , c.subcompanyname , c.supsubcomid diff --git a/finereport/xiazuan/2_operation/未完成计划明细.sql b/finereport/xiazuan/2_operation/未完成计划明细.sql new file mode 100644 index 0000000..4de0e7a --- /dev/null +++ b/finereport/xiazuan/2_operation/未完成计划明细.sql @@ -0,0 +1,105 @@ +-- ***************************** +-- 创建人员: 杨坤安 +-- 创建时间: +-- 功能描述: 未完成计划明细 +-- ***************************** + +with one_to_many AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) + WHERE a.username = '${fine_username}' +) +select + ${if(len(p_area) == 0,"c.organ_name","c.comm_name")} as p_area + ,c.oa_comm_id as oa_comm_id -- oa项目id + ,c.oa_comm_name as oa_comm_name -- oa项目名称 + ,c.oa_organ_code as oa_organ_code -- oa片区id + ,c.oa_organ_name as oa_organ_name -- oa片区名称 + ,c.organ_code as organ_code -- erp片区编码 + ,c.organ_name as organ_name -- erp片区名称 + ,c.comm_id as comm_id -- erp项目id + ,c.comm_name as comm_name -- erp项目名称 + ,b.subcompanyid1 as subcompanyid1 -- 公司id + ,a.plan_name as plan_name -- 计划名称 + ,a.eval_criteria as plan_desc -- 计划内容 + ,a.plan_level as plan_level -- 计划等级 + ,left(a.start_date,7) as ym -- 计划开始年月 + ,a.start_dt as start_dt -- 计划开始时 + ,a.end_date as end_date -- 计划结束时间 + ,a.finish_date as finish_date -- 计划完成时间 + ,a.input_date as input_date -- 计划录入时间 + ,a.day_diff as day_diff -- 距离计划结束天数 + ,a.responsible_person1 as responsible_person1 -- 责任人编码 + ,b.lastname as executor_name -- 责任人名称 + ,d.lastname AS lastname -- 执行人 + ,left(a.end_ym,7) as end_ym -- 计划结束年月 +from + ( + SELECT + concat(left(trim(start_date),5),lpad(substring_index(substring_index(trim(start_date),'-',2),'-',-1),2,0),right(trim(start_date),3)) as start_date + ,a.start_date as start_dt -- 计划开始时间 + ,a.plan_level -- 计划等级 + ,jt.responsible_person1 -- 责任人 + ,a.plan_status -- 计划状态 + ,a.input_date -- 录入时间 + ,a.end_date -- 计划结束时间 + ,a.plan_name -- 计划名称 + ,concat(left(trim(end_date),5),lpad(substring_index(substring_index(trim(end_date),'-',2),'-',-1),2,0),right(trim(end_date),3)) as end_ym + ,a.finish_date -- 完成时间 + ,TO_DAYS(a.end_date) - TO_DAYS(curdate()) AS day_diff + ,a.eval_criteria -- 评价标准 + ,a.executor -- 执行人 + FROM dw.dwd_operations_plan_info_d a, + JSON_TABLE ( + cast( CONCAT( '["', REPLACE ( responsible_person1, ',', '","' ), '"]' ) AS json ), + "$[*]" COLUMNS ( responsible_person1 INT PATH "$" ) + ) AS jt + WHERE a.plan_status = '4' + )a + left join + ( + select + id + ,subcompanyid1 -- 公司id + ,lastname -- 执行人 + from dw.ods_oa_hrmresource_d + + )b + on a.responsible_person1 = b.id + left join + ( + select + distinct + organ_code -- erp片区id + ,organ_name -- erp片区名称 + ,comm_id -- erp项目id + ,comm_name -- erp项目名称 + ,oa_organ_code -- oa片区id + ,oa_organ_name -- oa片区名称 + ,oa_comm_id -- oa项目id + ,oa_comm_name -- oa项目名称 + from dim_organ_mapping -- 组织结构映射维度表 + -- where comm_id is not null + )c + on b.subcompanyid1 = c.oa_comm_id + left join + ( + select + id + ,subcompanyid1 -- 公司id + ,lastname -- 执行人 + from dw.ods_oa_hrmresource_d + + )d + on a.executor = d.id +where 1 = 1 + ${if(len(p_startdate) == 0,"","and left(a.end_ym,7) = '" + p_startdate + "'")} + ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} +-- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END diff --git a/finereport/xiazuan/2_operation/计划到期明细.sql b/finereport/xiazuan/2_operation/计划到期明细.sql index 1ed0e56..1e9c3fa 100644 --- a/finereport/xiazuan/2_operation/计划到期明细.sql +++ b/finereport/xiazuan/2_operation/计划到期明细.sql @@ -5,7 +5,18 @@ -- 目 录: xianzuan>2_运营>计划到期明细.fvs -- **************************************** + + -- 【数据集: report_计划到期】 +with one_to_many AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) + WHERE a.username = '${fine_username}' +) select ${if(len(p_area) == 0,"c.organ_name","c.comm_name")} as p_area ,c.oa_comm_id as oa_comm_id -- oa项目id @@ -28,6 +39,7 @@ select ,a.day_diff as day_diff -- 距离计划结束天数 ,a.responsible_person1 as responsible_person1 -- 责任人编码 ,b.lastname as executor_name -- 责任人名称 + ,d.lastname AS lastname -- 执行人 ,left(a.end_ym,7) as end_ym -- 计划结束年月 from ( @@ -44,15 +56,16 @@ from ,a.finish_date -- 完成时间 ,TO_DAYS(a.end_date) - TO_DAYS(curdate()) AS day_diff ,a.eval_criteria -- 评价标准 + ,a.executor -- 执行人 FROM dw.dwd_operations_plan_info_d a, JSON_TABLE ( cast( CONCAT( '["', REPLACE ( responsible_person1, ',', '","' ), '"]' ) AS json ), "$[*]" COLUMNS ( responsible_person1 INT PATH "$" ) ) AS jt - -- WHERE TO_DAYS(a.end_date) - TO_DAYS(curdate()) <= 3 + -- WHERE TO_DAYS(a.end_date) - TO_DAYS(curdate()) <= 3 -- AND TO_DAYS(a.end_date) - TO_DAYS(curdate()) >= 1 where a.end_date > date_format(CURDATE() - INTERVAL 3 day,'%Y-%m-%d') - and a.end_date <= date_format(CURDATE(),'%Y-%m-%d') + and a.end_date <= date_format(CURDATE(),'%Y-%m-%d') )a left join ( @@ -64,25 +77,39 @@ from )b on a.responsible_person1 = b.id + left join + ( + select + distinct + organ_code -- erp片区id + ,organ_name -- erp片区名称 + ,comm_id -- erp项目id + ,comm_name -- erp项目名称 + ,oa_organ_code -- oa片区id + ,oa_organ_name -- oa片区名称 + ,oa_comm_id -- oa项目id + ,oa_comm_name -- oa项目名称 + from dim_organ_mapping -- 组织结构映射维度表 + -- where comm_id is not null + )c + on b.subcompanyid1 = c.oa_comm_id left join ( select - distinct - organ_code -- erp片区id - ,organ_name -- erp片区名称 - ,comm_id -- erp项目id - ,comm_name -- erp项目名称 - ,oa_organ_code -- oa片区id - ,oa_organ_name -- oa片区名称 - ,oa_comm_id -- oa项目id - ,oa_comm_name -- oa项目名称 - from dim_organ_mapping -- 组织结构映射维度表 - where comm_id is not null - )c - on b.subcompanyid1 = c.oa_comm_id - where 1 = 1 + id + ,subcompanyid1 -- 公司id + ,lastname -- 执行人 + from dw.ods_oa_hrmresource_d + + )d + on a.executor = d.id +where 1 = 1 ${if(len(p_startdate) == 0,"","and left(a.end_ym,7) = '" + p_startdate + "'")} - ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} + ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} +-- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END diff --git a/finereport/xiazuan/权责亏损项目明细.sql b/finereport/xiazuan/权责亏损项目明细.sql new file mode 100644 index 0000000..51b5063 --- /dev/null +++ b/finereport/xiazuan/权责亏损项目明细.sql @@ -0,0 +1,32 @@ +with one_to_many AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) + WHERE a.username = '${fine_username}' +) +SELECT + organ_code -- erp片区code + ,organ_name -- erp片区名称 + ,comm_id -- 项目id + ,comm_name -- 项目名称 + ,index_income_target -- 收入目标 + ,index_income_fact -- 收入完成 + ,income_completion_rate -- 完成率 + ,index_cost_target -- 成本目标 + ,index_cost_fact -- 成本完成 + ,cost_completion_rate -- 完成率 + ,index_profit_target -- 利润目标 + ,index_profit_fact -- 利润完成 + ,profit_completion_rate -- 完成率 + ,index_market_target -- 市扩目标 + ,index_market_fact -- 市扩完成 + ,market_completion_rate -- 完成率 +from ods_caiwu_feecollection +where category = '物业' +and index_profit_fact < 0 +${IF(LEN(p_startdate)>0," AND yr_month ='" + p_startdate + "'","and yr_month = '2024-06' ")} +${if(len(p_area) == 0,"","and organ_code in ('" + p_area + "')")} +${IF(LEN(p_shop)!=0," and comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} \ No newline at end of file diff --git a/finereport/问题修复/计划到期明细组织架构为空.sql b/finereport/问题修复/计划到期明细组织架构为空.sql new file mode 100644 index 0000000..c066bda --- /dev/null +++ b/finereport/问题修复/计划到期明细组织架构为空.sql @@ -0,0 +1,90 @@ + + + +SELECT + c.organ_name + ,c.comm_name + ,c.oa_comm_id as oa_comm_id -- oa项目id + ,c.oa_comm_name as oa_comm_name -- oa项目名称 + ,c.oa_organ_code as oa_organ_code -- oa片区id + ,c.oa_organ_name as oa_organ_name -- oa片区名称 + ,c.organ_code as organ_code -- erp片区编码 + ,c.organ_name as organ_name -- erp片区名称 + ,c.comm_id as comm_id -- erp项目id + ,c.comm_name as comm_name -- erp项目名称 + ,b.subcompanyid1 as subcompanyid1 -- 公司id + ,a.plan_name as plan_name -- 计划名称 + ,a.eval_criteria as plan_desc -- 计划内容 + ,a.plan_level as plan_level -- 计划等级 + ,left(a.start_date,7) as ym -- 计划开始年月 + ,a.start_dt as start_dt -- 计划开始时 + ,a.end_date as end_date -- 计划结束时间 + ,a.finish_date as finish_date -- 计划完成时间 + ,a.input_date as input_date -- 计划录入时间 + ,a.day_diff as day_diff -- 距离计划结束天数 + ,a.responsible_person1 as responsible_person1 -- 责任人编码 + ,b.lastname as executor_name -- 责任人名称 + ,left(a.end_ym,7) as end_ym -- 计划结束年月 +from + ( + SELECT + concat(left(trim(start_date),5),lpad(substring_index(substring_index(trim(start_date),'-',2),'-',-1),2,0),right(trim(start_date),3)) as start_date + ,a.start_date as start_dt -- 计划开始时间 + ,a.plan_level -- 计划等级 + ,jt.responsible_person1 -- 责任人 + ,a.plan_status -- 计划状态 + ,a.input_date -- 录入时间 + ,a.end_date -- 计划结束时间 + ,a.plan_name -- 计划名称 + ,concat(left(trim(end_date),5),lpad(substring_index(substring_index(trim(end_date),'-',2),'-',-1),2,0),right(trim(end_date),3)) as end_ym + ,a.finish_date -- 完成时间 + ,TO_DAYS(a.end_date) - TO_DAYS(curdate()) AS day_diff + ,a.eval_criteria -- 评价标准 + FROM dw.dwd_operations_plan_info_d a, + JSON_TABLE ( + cast( CONCAT( '["', REPLACE ( responsible_person1, ',', '","' ), '"]' ) AS json ), + "$[*]" COLUMNS ( responsible_person1 INT PATH "$" ) + ) AS jt + -- WHERE TO_DAYS(a.end_date) - TO_DAYS(curdate()) <= 3 + -- AND TO_DAYS(a.end_date) - TO_DAYS(curdate()) >= 1 + where a.end_date > date_format(CURDATE() - INTERVAL 3 day,'%Y-%m-%d') + and a.end_date <= date_format(CURDATE(),'%Y-%m-%d') + )a + left join + ( + select + id + ,subcompanyid1 -- 公司id + ,lastname -- 执行人 + from dw.ods_oa_hrmresource_d + + )b + on a.responsible_person1 = b.id + left join + ( + select + distinct + organ_code -- erp片区id + ,organ_name -- erp片区名称 + ,comm_id -- erp项目id + ,comm_name -- erp项目名称 + ,oa_organ_code -- oa片区id + ,oa_organ_name -- oa片区名称 + ,oa_comm_id -- oa项目id + ,oa_comm_name -- oa项目名称 + from dim_organ_mapping -- 组织结构映射维度表 + -- WHERE oa_comm_id = '610' + WHERE oa_organ_code = '610' + -- where comm_id is not null + )c + on b.subcompanyid1 = c.oa_comm_id +; + + + +select + id + ,subcompanyid1 -- 公司id + ,lastname -- 执行人 +from dw.ods_oa_hrmresource_d +WHERE ods_oa_hrmresource_d.subcompanyid1 = '610'; \ No newline at end of file From b708bcdcfcaf764b1cd75f5614ca50a126bc0be2 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 24 Sep 2024 13:59:03 +0800 Subject: [PATCH 69/89] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 1 + finereport/xiazuan/权责亏损项目明细.sql | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index de6baaf..1c139a9 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -50,6 +50,7 @@ + diff --git a/finereport/xiazuan/权责亏损项目明细.sql b/finereport/xiazuan/权责亏损项目明细.sql index 51b5063..b2b7e70 100644 --- a/finereport/xiazuan/权责亏损项目明细.sql +++ b/finereport/xiazuan/权责亏损项目明细.sql @@ -3,7 +3,7 @@ with one_to_many AS( a.username AS username -- 用户名 ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 FROM ods_one_to_many_perm a - JOIN mysql.help_topic b + JOIN mysql.help_topic b on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) WHERE a.username = '${fine_username}' ) From c18eaa43fb165f5a847fea68967d749ec7eb7a84 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 24 Sep 2024 18:01:11 +0800 Subject: [PATCH 70/89] =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E4=B8=9A=E6=80=81?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=8F=96=E5=80=BC=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dw/dim/dim_project_base_info_d.sql | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/dw/dim/dim_project_base_info_d.sql b/dw/dim/dim_project_base_info_d.sql index 8bfb4a2..1395e99 100644 --- a/dw/dim/dim_project_base_info_d.sql +++ b/dw/dim/dim_project_base_info_d.sql @@ -2,6 +2,8 @@ -- 修改人: 杨坤安 -- 修改日期: 2024-09-06 -- 修改内容: 一个项目接管面积会有多个,先累加再关联 +-- 修改日期: 2024-09-24 +-- 修改内容: 项目对应业态取值规则变更 -- ***************************** select b.CommId @@ -57,6 +59,7 @@ select , a.CityLevel , a.CommitteeTermStartDate , a.CommitteeTermEndDate + , b.DictionaryName AS StateNameNew from ( select c.CommId @@ -117,5 +120,26 @@ from ( on a.ParentId = c.id group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33 ) a - right join (select * from ods_erp_tb_hspr_community_d where IsDelete = 0) b - on a.CommId = b.CommId \ No newline at end of file + right join + ( + SELECT + b1.* + ,b2.DictionaryName + FROM + ( + select + * + from ods_erp_tb_hspr_community_d + where IsDelete = 0 + )b1 + LEFT JOIN + (-- add 2024-09-24 项目业态新规则取数 + select + DictionaryCode -- 项目业态编码 + ,DictionaryName -- 项目业态名称 + from ods_erp_tb_dictionary_projectformat_d + )b2 + ON B1.CommKind = b2.DictionaryCode + + ) b + on a.CommId = b.CommId \ No newline at end of file From 6fb59d75da1be6dec53b961a18188d82b8e0de8f Mon Sep 17 00:00:00 2001 From: yangkunan Date: Wed, 9 Oct 2024 16:59:33 +0800 Subject: [PATCH 71/89] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=90=88=E5=90=8C?= =?UTF-8?q?=E7=BB=93=E6=9D=9F=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xiazuan/2_operation/项目明细弹窗.sql | 71 ++++++++++--------- 1 file changed, 36 insertions(+), 35 deletions(-) diff --git a/finereport/xiazuan/2_operation/项目明细弹窗.sql b/finereport/xiazuan/2_operation/项目明细弹窗.sql index e7a7f4d..e5de853 100644 --- a/finereport/xiazuan/2_operation/项目明细弹窗.sql +++ b/finereport/xiazuan/2_operation/项目明细弹窗.sql @@ -485,7 +485,7 @@ SELECT A.ContractArea,-- 合同面积 【建筑面积】 A.TakeOverArea,-- 接管面积 【合约面积】 A.ManageContractArea ManageContractArea,-- 管理口径合同面积 【在管面积】 - A.StateName AS StateName,-- 业态 【项目业态】 + A.StateNameNew AS StateName,-- 业态 【项目业态】 A.ContractName,-- 合同类型 A.GetMethod,-- 项目获取渠道 A.ContractPartyName,-- 合同对方名称 @@ -494,7 +494,9 @@ SELECT END AS 是否成立委员会,-- 是否已成立业主委员会 A.CommitteeTime,-- 业委会成立时间 A.ChargeMode, - CONCAT(DATE_FORMAT(A.CommitteeTermStartDate, '%Y-%m-%d' ) , ' 至 ',DATE_FORMAT(A.CommitteeTermEndDate, '%Y-%m-%d' )) AS 任职天数,-- 任职时间 + CASE WHEN A.IsSetCommittee = '1' THEN CONCAT(DATE_FORMAT(A.CommitteeTermStartDate, '%Y-%m-%d' ) , ' 至 ',DATE_FORMAT(A.CommitteeTermEndDate, '%Y-%m-%d' )) + ELSE NULL END + AS 任职天数,-- 任职时间 C.room_num AS room_num,-- 总户数 B.organ_name AS organ_name,-- erp片区名称 B.comm_name AS comm_name,-- erp项目名称 @@ -524,7 +526,8 @@ SELECT G.厂区物业服务费, G.酒店物业服务费, G.车位管理物业服务费, - G.车位月租费用 + G.车位月租费用, + A.ContractEndTime FROM ( SELECT @@ -570,9 +573,9 @@ AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = ' LEFT JOIN ( - SELECT + SELECT a.CommID - ,SUM(CASE WHEN a.roomstate <> 0 THEN 1 ELSE 0 END) AS room_num, -- 项目对应房间数量 + ,SUM(CASE WHEN a.roomstate <> 0 THEN 1 ELSE 0 END) AS room_num, -- 项目对应房间数量 SUM( CASE WHEN a.roomstate IN ( '1', '4', '9', '10', '5', '6' ) THEN a.buildarea ELSE 0 END ) AS 已售面积, SUM( CASE WHEN a.roomstate = '2' THEN a.buildarea ELSE 0 END ) AS 未售面积, SUM( CASE WHEN a.roomstate NOT IN('0','2') THEN 1 ELSE 0 END ) AS 已交付户数, @@ -581,35 +584,34 @@ AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = ' SUM( CASE WHEN a.roomstate IN ( '9', '10', '5', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修户数, SUM( CASE WHEN a.roomstate = '5' THEN 1 ELSE 0 END ) AS 已完成装修未入住, SUM( CASE WHEN a.roomstate IN ( '9', '10', '6' ) THEN 1 ELSE 0 END ) AS 已完成装修已入住, - -- SUM(b.CalcArea) AS 收费面积 - -- 2024-09-20更新取数新逻辑:石老师确认 收费面积从房间表取 + -- SUM(b.CalcArea) AS 收费面积 SUM(CASE WHEN a.roomstate IS NOT NULL AND a.roomstate <> '' THEN a.CalcArea ELSE 0 END) AS 收费面积 FROM - ( - SELECT - * - FROM dw.dim_room_d - )a - LEFT JOIN - ( - SELECT - b1.CommId AS CommId - ,b1.RoomID AS RoomID - ,SUM(CalcArea) AS CalcArea - FROM - ( - SELECT - CommId - , CalcArea - , RoomID - FROM ods_erp_tb_hspr_coststansetting_d - WHERE RoomID <> '0' - GROUP BY CommId, CalcArea, RoomID - )b1 - GROUP BY b1.CommId,b1.RoomID - )b - ON a.CommID = b.CommId - AND a.RoomID = b.RoomID + ( + SELECT + * + FROM dw.dim_room_d + )a + LEFT JOIN + ( + SELECT + b1.CommId AS CommId + ,b1.RoomID AS RoomID + ,SUM(CalcArea) AS CalcArea + FROM + ( + SELECT + CommId + , CalcArea + , RoomID + FROM ods_erp_tb_hspr_coststansetting_d + WHERE RoomID <> '0' + GROUP BY CommId, CalcArea, RoomID + )b1 + GROUP BY b1.CommId,b1.RoomID + )b + ON a.CommID = b.CommId + AND a.RoomID = b.RoomID GROUP BY CommID )C ON A.CommId = C.CommID @@ -625,7 +627,7 @@ AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = ' CommID )D ON A.COMMID = D.COMMID - LEFT JOIN + LEFT JOIN ( SELECT A.CommId @@ -707,5 +709,4 @@ AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = ' GROUP BY A.CommId )G - ON A.COMMID = G.COMMID -; \ No newline at end of file + ON A.COMMID = G.COMMID \ No newline at end of file From 11a9eab1ba69fa3e1fea1d2f18932f0ec8865e35 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Thu, 17 Oct 2024 11:19:07 +0800 Subject: [PATCH 72/89] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 2 + dw/dim/dim_project_base_info_d.sql | 88 +++--- dw/dwd/dwd_cost_detail_data_d.sql | 2 +- .../dws_operation_subcompany_plan_level_d.sql | 45 +-- finereport/kanban/mobile/工程_mobile.sql | 31 +- .../xiazuan/2_operation/计划到期明细.sql | 25 +- .../xiazuan/4_engine/2_水电能耗明细.sql | 264 +++++++++++++----- finereport/预警/片区预警数据.sql | 1 + 8 files changed, 315 insertions(+), 143 deletions(-) diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 1c139a9..98b3673 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -10,6 +10,7 @@ + @@ -29,6 +30,7 @@ + diff --git a/dw/dim/dim_project_base_info_d.sql b/dw/dim/dim_project_base_info_d.sql index 1395e99..0163dc5 100644 --- a/dw/dim/dim_project_base_info_d.sql +++ b/dw/dim/dim_project_base_info_d.sql @@ -4,6 +4,8 @@ -- 修改内容: 一个项目接管面积会有多个,先累加再关联 -- 修改日期: 2024-09-24 -- 修改内容: 项目对应业态取值规则变更 +-- 修改日期: 2024-10-09 +-- 修改内容: 新增合同到期时间 -- ***************************** select b.CommId @@ -60,6 +62,7 @@ select , a.CommitteeTermStartDate , a.CommitteeTermEndDate , b.DictionaryName AS StateNameNew + , a.ContractEndTime AS ContractEndTime from ( select c.CommId @@ -95,51 +98,52 @@ from ( , c.CityLevel , c.CommitteeTermStartDate , c.CommitteeTermEndDate + , a.ContractEndTime -- 合同结束时间 , sum(TakeOverArea) TakeOverArea , sum(ContractArea) ContractArea , sum(ManageContractArea) ManageContractArea from - ( - select - * - from ods_erp_tb_hspr_projecttakeoverinformation_d - where IsDelete = 0 - ) a - left join - ( - select - ParentId - ,SUM(TakeOverArea) AS TakeOverArea - from ods_erp_tb_hspr_projecttakeoverdetail_d - WHERE IsDelete = 0 - group by - ParentId - ) b - on a.id = b.ParentId - right join (select * from ods_erp_tb_hspr_projectbasicinfomation_d where IsDelete = 0) c - on a.ParentId = c.id - group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33 + ( + select + * + from ods_erp_tb_hspr_projecttakeoverinformation_d + where IsDelete = 0 + ) a + left join + ( + select + ParentId + ,SUM(TakeOverArea) AS TakeOverArea + from ods_erp_tb_hspr_projecttakeoverdetail_d + WHERE IsDelete = 0 + group by + ParentId + ) b + on a.id = b.ParentId + right join (select * from ods_erp_tb_hspr_projectbasicinfomation_d where IsDelete = 0) c + on a.ParentId = c.id + group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34 ) a - right join - ( - SELECT - b1.* - ,b2.DictionaryName - FROM - ( - select - * - from ods_erp_tb_hspr_community_d - where IsDelete = 0 - )b1 - LEFT JOIN - (-- add 2024-09-24 项目业态新规则取数 - select - DictionaryCode -- 项目业态编码 - ,DictionaryName -- 项目业态名称 - from ods_erp_tb_dictionary_projectformat_d - )b2 - ON B1.CommKind = b2.DictionaryCode + right join + ( + SELECT + b1.* + ,b2.DictionaryName + FROM + ( + select + * + from ods_erp_tb_hspr_community_d + where IsDelete = 0 + )b1 + LEFT JOIN + (-- add 2024-09-24 项目业态新规则取数 + select + DictionaryCode -- 项目业态编码 + ,DictionaryName -- 项目业态名称 + from ods_erp_tb_dictionary_projectformat_d + )b2 + ON B1.CommKind = b2.DictionaryCode - ) b - on a.CommId = b.CommId \ No newline at end of file + ) b + on a.CommId = b.CommId \ No newline at end of file diff --git a/dw/dwd/dwd_cost_detail_data_d.sql b/dw/dwd/dwd_cost_detail_data_d.sql index 069bd28..bd2c7cc 100644 --- a/dw/dwd/dwd_cost_detail_data_d.sql +++ b/dw/dwd/dwd_cost_detail_data_d.sql @@ -47,7 +47,7 @@ CREATE TABLE IF NOT EXISTS dw.dwd_cost_detail_data_d ( -- ---------------------------------------------------------------------------------------------- - +SELECT * FROM dw.dwd_cost_detail_data_d; truncate dw.dwd_cost_detail_data_d; INSERT into dw.dwd_cost_detail_data_d SELECT diff --git a/dw/dws/dws_operation_subcompany_plan_level_d.sql b/dw/dws/dws_operation_subcompany_plan_level_d.sql index 708aaaa..467de22 100644 --- a/dw/dws/dws_operation_subcompany_plan_level_d.sql +++ b/dw/dws/dws_operation_subcompany_plan_level_d.sql @@ -4,18 +4,23 @@ select , c.subcompanyname , c.supsubcomid , a.plan_level - , count(*) plan_num - , count(plan_name) plan_adjust_num - , sum(case when plan_status = 2 then 1 else 0 end) plan_cancel_num - , sum(case when plan_status = 7 then 1 else 0 end) plan_exempt_assess_num - , sum(case when plan_status = 4 then 1 else 0 end) plan_incomplete_num - , sum(case when left(start_date,7) = left(input_date,7) then 1 else 0 end) plan_thism_num - , sum(case when plan_status = 0 then 1 else 0 end) plan_in_progress_num - , sum(case when plan_status = 1 then 1 else 0 end) plan_complete_num + ,a.plan_name +,a.id +,a.responsible_person1 +,organ_code, organ_name, comm_id, comm_name + , oa_organ_code, oa_organ_name, oa_comm_id, oa_comm_name + -- , count(*) plan_num + -- , count(plan_name) plan_adjust_num + -- , sum(case when plan_status = 2 then 1 else 0 end) plan_cancel_num + -- , sum(case when plan_status = 7 then 1 else 0 end) plan_exempt_assess_num + -- , sum(case when plan_status = 4 then 1 else 0 end) plan_incomplete_num + -- , sum(case when left(start_date,7) = left(input_date,7) then 1 else 0 end) plan_thism_num + -- , sum(case when plan_status = 0 then 1 else 0 end) plan_in_progress_num + -- , sum(case when plan_status = 1 then 1 else 0 end) plan_complete_num from ( SELECT concat(left(trim(start_date),5),lpad(substring_index(substring_index(trim(start_date),'-',2),'-',-1),2,0),right(trim(start_date),3)) start_date, - a.plan_level, + a.plan_level,plan_name, jt.responsible_person1 , a.id, a.plan_status, @@ -26,6 +31,8 @@ from ( cast( CONCAT( '["', REPLACE ( responsible_person1, ',', '","' ), '"]' ) AS json ), "$[*]" COLUMNS ( responsible_person1 INT PATH "$" ) ) AS jt + where a.id in ('17015','17016','17024','17056','17075','17084','29372','29373','29374','29375','29376','29377','29433','29434','29435','29436','29437','29438','29439','29440','29503','29504','29505','29506','29507','29508','29509','29510','29561','29562','29564','29565','29566','29567','29568','29569','29591','29629','29630','40703','42177','42180','42767','42779','42837') + ) a left join ods_oa_hrmresource_d b on a.responsible_person1 = b.id @@ -33,10 +40,16 @@ from ( on b.subcompanyid1 = c.id left join (select distinct plan_name from dwd_operations_plan_adjust_info_d) d on a.id = d.plan_name -WHERE left(a.end_date,7) = '2024-09' -group by - left(a.end_date,7) - , b.subcompanyid1 - , c.subcompanyname - , c.supsubcomid - , a.plan_level \ No newline at end of file + left join (select distinct organ_code, organ_name, comm_id, comm_name + , oa_organ_code, oa_organ_name, oa_comm_id, oa_comm_name from dim_organ_mapping where comm_id is not null) b1 + on b.subcompanyid1 = b1.oa_comm_id + +WHERE left(a.end_date,7) = '2024-10' + +-- AND b.subcompanyid1 in(select distinct oa_comm_id from dim_organ_mapping where comm_id is not null and organ_code = '0108') +-- group by +-- left(a.end_date,7) +-- , b.subcompanyid1 +-- , c.subcompanyname +-- , c.supsubcomid +-- , a.plan_level \ No newline at end of file diff --git a/finereport/kanban/mobile/工程_mobile.sql b/finereport/kanban/mobile/工程_mobile.sql index 32c706f..646a484 100644 --- a/finereport/kanban/mobile/工程_mobile.sql +++ b/finereport/kanban/mobile/工程_mobile.sql @@ -1,5 +1,3 @@ --- 【单位面积能耗同环比】 - select A.organ_code AS organ_code , A.organ_name AS organ_name @@ -9,7 +7,12 @@ select , 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 + , B.StateNameNew AS StateNameNew + ,CASE WHEN StateNameNew = '写字楼' AND MeterType = '水表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS XZL_SHUI + ,CASE WHEN StateNameNew = '写字楼' AND MeterType = '电表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS XZL_DIAN + ,CASE WHEN StateNameNew = '商住' AND MeterType = '水表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS SZ_SHUI + ,CASE WHEN StateNameNew = '商住' AND MeterType = '电表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS SZ_DIAN + ,IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) AS DOSAGE_PER_SQUARE_METER from ( SELECT @@ -22,23 +25,26 @@ from , Dosage , Amount FROM dws_engine_meter_dosage_m - ${IF(p_type = "环比","/*","")} + ${IF(p_type = "环比","/*","")} 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(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + -- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + ${IF(LEN(p_shop)!=0," and comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} ${IF(LEN(p_ym)>0," AND right(list_ym,2) ='" +right(p_ym,2) + "'","")} and MeterType in ('水表','电表') order by list_ym asc ${IF(p_type = "环比","*/","")} - ${IF(p_type = "环比","","/*")} + ${IF(p_type = "环比","","/*")} 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,"','")+"')", "")} - ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + -- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} + + ${IF(LEN(p_shop)!=0," and comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} ORDER BY list_ym ASC ${IF(p_type = "环比","","*/")} )A @@ -46,11 +52,16 @@ from ( select CommId -- 项目id + ,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew + ELSE '商住' + END AS StateNameNew + ,SUM(FloorArea + UndergroundArea) as totalarea ,SUM(ContractArea) AS ContractArea-- 合同面积(建筑面积) from dim_project_base_info_d GROUP BY - CommId + CommId,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew + ELSE '商住' + END )B ON A.comm_id = B.CommId -ORDER BY A.list_ym,A.MeterType -; \ No newline at end of file +ORDER BY A.list_ym,A.MeterType \ No newline at end of file diff --git a/finereport/xiazuan/2_operation/计划到期明细.sql b/finereport/xiazuan/2_operation/计划到期明细.sql index 1e9c3fa..1619f33 100644 --- a/finereport/xiazuan/2_operation/计划到期明细.sql +++ b/finereport/xiazuan/2_operation/计划到期明细.sql @@ -18,7 +18,8 @@ with one_to_many AS( WHERE a.username = '${fine_username}' ) select - ${if(len(p_area) == 0,"c.organ_name","c.comm_name")} as p_area + -- ${if(len(p_area) == 0,"c.organ_name","c.comm_name")} as p_area + ${if(len(p_area) == 0,"COALESCE(c.oa_organ_name,e.subcompanyname)","COALESCE(c.oa_comm_name,e.subcompanyname)")} as p_area ,c.oa_comm_id as oa_comm_id -- oa项目id ,c.oa_comm_name as oa_comm_name -- oa项目名称 ,c.oa_organ_code as oa_organ_code -- oa片区id @@ -31,6 +32,7 @@ select ,a.plan_name as plan_name -- 计划名称 ,a.eval_criteria as plan_desc -- 计划内容 ,a.plan_level as plan_level -- 计划等级 + ,a.plan_level_name as plan_level_name -- 计划等级名称 ,left(a.start_date,7) as ym -- 计划开始年月 ,a.start_dt as start_dt -- 计划开始时 ,a.end_date as end_date -- 计划结束时间 @@ -57,12 +59,13 @@ from ,TO_DAYS(a.end_date) - TO_DAYS(curdate()) AS day_diff ,a.eval_criteria -- 评价标准 ,a.executor -- 执行人 + ,case when a.plan_level = 4 then '控股集团级计划' when a.plan_level = 0 then '一级计划' when a.plan_level = 1 then '二级计划' when a.plan_level = 3 then '三级计划' end plan_level_name FROM dw.dwd_operations_plan_info_d a, JSON_TABLE ( cast( CONCAT( '["', REPLACE ( responsible_person1, ',', '","' ), '"]' ) AS json ), "$[*]" COLUMNS ( responsible_person1 INT PATH "$" ) ) AS jt - -- WHERE TO_DAYS(a.end_date) - TO_DAYS(curdate()) <= 3 + -- WHERE TO_DAYS(a.end_date) - TO_DAYS(curdate()) <= 3 -- AND TO_DAYS(a.end_date) - TO_DAYS(curdate()) >= 1 where a.end_date > date_format(CURDATE() - INTERVAL 3 day,'%Y-%m-%d') and a.end_date <= date_format(CURDATE(),'%Y-%m-%d') @@ -93,7 +96,7 @@ from -- where comm_id is not null )c on b.subcompanyid1 = c.oa_comm_id - left join + left join ( select id @@ -103,15 +106,21 @@ from )d on a.executor = d.id + LEFT JOIN + ( + SELECT + * + FROM dw.ods_oa_hrmsubcompany_d -- 分部信息表 + -- WHERE id = '288' + )e + ON b.subcompanyid1 = e.id where 1 = 1 ${if(len(p_startdate) == 0,"","and left(a.end_ym,7) = '" + p_startdate + "'")} - ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} + ${IF(LEN(p_area)!=0," and coalesce(c.oa_organ_code,e.id) IN ('"+p_area+"')","")} -- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL - THEN comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') - ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END - - + THEN COALESCE(c.oa_organ_name,e.subcompanyname) IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","COALESCE(c.oa_organ_name,e.subcompanyname) = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END -- 【筛选框数据集: dic_oa片区】 diff --git a/finereport/xiazuan/4_engine/2_水电能耗明细.sql b/finereport/xiazuan/4_engine/2_水电能耗明细.sql index 2cd34d4..d90e46a 100644 --- a/finereport/xiazuan/4_engine/2_水电能耗明细.sql +++ b/finereport/xiazuan/4_engine/2_水电能耗明细.sql @@ -1,82 +1,214 @@ - +-- 【dic_erp片区】 +with one_to_many_organ AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_organ, ',',b.help_topic_id + 1),',',-1) AS mang_organ -- 管理片区 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_organ) - length(replace(a.mang_organ,',','')) + 1) + WHERE a.username = '${fine_username}' +) 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)+"'")} +-- ${if(GETUSERDEPARTMENTS(2)="领悦集团总部","","and organ_name = '"+GETUSERDEPARTMENTS(2)+"'")} + AND CASE WHEN (SELECT mang_organ FROM ods_one_to_many_perm WHERE username = '${fine_username}') IS NOT NULL + THEN organ_name IN (SELECT mang_organ FROM one_to_many_organ WHERE username = '${fine_username}') + ELSE ${if(GETUSERDEPARTMENTS(2)!="领悦集团总部","organ_name = '"+GETUSERDEPARTMENTS(2)+"'","1=1")} END - - --- 【能耗环比】 - --- 折线图 -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 - --- 明细表 - - - - - - --- 【能耗同比】 +-- 【单位面积能耗_环比】 + with one_to_many AS( 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 +a.username AS username -- 用户名 +,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 +FROM ods_one_to_many_perm a +JOIN mysql.help_topic b +on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) +WHERE a.username = '${fine_username}' +) +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 + , B.StateNameNew AS StateNameNew + ,CASE WHEN StateNameNew = '写字楼' AND MeterType = '水表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS XZL_SHUI + ,CASE WHEN StateNameNew = '写字楼' AND MeterType = '电表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS XZL_DIAN + ,CASE WHEN StateNameNew = '商住' AND MeterType = '水表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS SZ_SHUI + ,CASE WHEN StateNameNew = '商住' AND MeterType = '电表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS SZ_DIAN + ,IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) 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)+"'","")} + AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END + )A + LEFT JOIN + ( + select + CommId -- 项目id + ,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew + ELSE '商住' + END AS StateNameNew + ,SUM(FloorArea + UndergroundArea) as totalarea + ,SUM(ContractArea) AS ContractArea-- 合同面积(建筑面积) + from dim_project_base_info_d + GROUP BY + CommId,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew + ELSE '商住' + END + )B + ON A.comm_id = B.CommId +ORDER BY A.list_ym,A.MeterType + +-- 【单位面积能耗_同比】 + + with one_to_many AS( +SELECT +a.username AS username -- 用户名 +,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 +FROM ods_one_to_many_perm a +JOIN mysql.help_topic b +on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) +WHERE a.username = '${fine_username}' +) +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 + , B.StateNameNew AS StateNameNew + ,CASE WHEN StateNameNew = '写字楼' AND MeterType = '水表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS XZL_SHUI + ,CASE WHEN StateNameNew = '写字楼' AND MeterType = '电表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS XZL_DIAN + ,CASE WHEN StateNameNew = '商住' AND MeterType = '水表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS SZ_SHUI + ,CASE WHEN StateNameNew = '商住' AND MeterType = '电表' THEN IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea)) ELSE 0 END AS SZ_DIAN + ,IF(B.ContractArea = 0,0,(A.Dosage / B.totalarea))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 CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END + + and MeterType in ('水表','电表') + + )A + LEFT JOIN + ( + select + CommId -- 项目id + ,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew + ELSE '商住' + END AS StateNameNew + ,SUM(FloorArea + UndergroundArea) as totalarea + ,SUM(ContractArea) AS ContractArea-- 合同面积(建筑面积) + from dim_project_base_info_d + GROUP BY + CommId,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew + ELSE '商住' + END + )B + ON A.comm_id = B.CommId +order by A.list_ym,A.MeterType asc -- 【明细】 + with one_to_many AS( +SELECT +a.username AS username -- 用户名 +,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 +FROM ods_one_to_many_perm a +JOIN mysql.help_topic b +on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) +WHERE a.username = '${fine_username}' +) 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,"','")+"')", "")} + + ${if(len(p_area) == 0,"A.organ_name","A.comm_name")} as p_area -- 片区/项目 + , A.MeterType AS MeterType + , SUM(A.Dosage) AS Dosage -- 能耗 + , sum(A.Amount) AS Amount -- 金额 + -- , B.StateNameNew AS StateNameNew -- 业态 + ,IF(sum(B.ContractArea) = 0,0,(sum(A.Dosage) / sum(B.totalarea)))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 = ${replace(p_ym,'-','')} + ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(P_MeterType)>0," AND MeterType IN ('"+JOINARRAY(P_MeterType,"','")+"')", "")} + )A + LEFT JOIN + ( + select + CommId -- 项目id + ,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew + ELSE '商住' + END AS StateNameNew + ,SUM(FloorArea + UndergroundArea) as totalarea + ,SUM(ContractArea) AS ContractArea-- 合同面积(建筑面积) + from dim_project_base_info_d + GROUP BY + CommId,CASE WHEN StateNameNew = '写字楼' THEN StateNameNew + ELSE '商住' + END + )B + ON A.comm_id = B.CommId GROUP BY -${if(len(p_area) == 0,"organ_name","comm_name")} - , MeterType - - +${if(len(p_area) == 0,"A.organ_name","A.comm_name")} +, A.MeterType \ No newline at end of file diff --git a/finereport/预警/片区预警数据.sql b/finereport/预警/片区预警数据.sql index 1bd2ad6..81078fc 100644 --- a/finereport/预警/片区预警数据.sql +++ b/finereport/预警/片区预警数据.sql @@ -132,6 +132,7 @@ FROM ,organ_name ,sum(ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0)) / sum(ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0)) cu_collection_rate ,sum((- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum(ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0)) pr_collection_rate + ,sum(ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0)- ifnull(cu_offset_pr_amt,0) - ifnull(cu_paid_pr_amt,0)) / sum(ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0) + ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0)) total_collection_rate from dwd_finance_fees_serial_d where ParentCostCode = '0001' and ym = left(current_date,7) From b4b656c681dc0064c0c1297c219b2db276c61309 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Fri, 25 Oct 2024 15:13:36 +0800 Subject: [PATCH 73/89] =?UTF-8?q?=E4=BA=BA=E5=8A=9B=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E6=8C=87=E6=A0=87=E7=AC=AC=E4=B8=80=E7=89=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- finereport/kanban/pc/人力.sql | 542 ++++++++++++++++++++++++++++++++++ 1 file changed, 542 insertions(+) diff --git a/finereport/kanban/pc/人力.sql b/finereport/kanban/pc/人力.sql index e69de29..14dec1e 100644 --- a/finereport/kanban/pc/人力.sql +++ b/finereport/kanban/pc/人力.sql @@ -0,0 +1,542 @@ +-- ====================================== +-- 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(sl) AS SL +FROM + ( + SELECT + pq + ,zb + ,xm + ,sl + FROM ods_hr_view_zaizhi_all_d -- 在职人数 + WHERE 1=1 + ${IF(LEN(p_area)>0," AND pq IN ('"+JOINARRAY(p_area,"','")+"')", "")} + + )A + JOIN + ( + SELECT + * + FROM ods_hr_hrmsubcompany_d + )B + ON A.pq = B.id + JOIN + ( + SELECT + * + FROM ods_hr_hrmsubcompany_d + )C + ON A.xm = C.id + +-- ====================================== +-- 指标卡_离职人数 +-- ====================================== + +SELECT + SUM(lzrs) AS SL +FROM + ( + SELECT + pq + ,zb + ,xm + ,lzrs + ,concat(nd,'-',yd) AS YM + FROM ods_hr_view_lzrs_d -- 离职人数 + WHERE concat(nd,'-',yd) = '${p_ym}' + ${IF(LEN(p_area)>0," AND pq IN ('"+JOINARRAY(p_area,"','")+"')", "")} + )A + JOIN + ( + SELECT + * + FROM ods_hr_hrmsubcompany_d + )B + ON A.pq = B.id + JOIN + ( + SELECT + * + FROM ods_hr_hrmsubcompany_d + )C + ON A.xm = C.id + + +-- ====================================== +-- 指标卡_人力成本 +-- ====================================== + + +SELECT + sum(A.total_fee) AS total_fee +FROM + ( + select + organ_name + ,sum(total_fee) AS total_fee + from dw.dws_cost_lc_summary_d + WHERE fee_type = '实际值' + AND concat(yearname,'-',monthname) = '${p_ym}' + GROUP BY + organ_name + )A + LEFT JOIN + ( + SELECT + id + ,subcompanyname + FROM ods_hr_hrmsubcompany_d + WHERE tlevel = '2' + GROUP BY + id + ,subcompanyname + )B + ON A.organ_name = B.subcompanyname +WHERE 1 = 1 + ${IF(LEN(p_area)>0," AND B.id IN ('"+JOINARRAY(p_area,"','")+"')", "")} + + +-- ====================================== +-- 指标卡_行政成本 +-- ====================================== + +SELECT + sum(A.total_fee) AS total_fee +FROM + ( + select + organ_name + ,sum(total_fee) AS total_fee + from dw.dws_cost_ac_summary_d + WHERE fee_type = '实际值' + AND concat(yearname,'-',monthname) = '${p_ym}' + GROUP BY + organ_name + )A + LEFT JOIN + ( + SELECT + id + ,subcompanyname + FROM ods_hr_hrmsubcompany_d + WHERE tlevel = '2' + GROUP BY + id + ,subcompanyname + )B + ON A.organ_name = B.subcompanyname +WHERE 1 = 1 + ${IF(LEN(p_area)>0," AND B.id IN ('"+JOINARRAY(p_area,"','")+"')", "")} + +-- ====================================== +-- 员工满编率柱状图 +-- ====================================== +SELECT + nd -- 年度 + ,jd -- 季度 + ,yd -- 月度 + ,rq -- 日期 + ,zb -- 总部 + ,pq -- 片区 + ,xm -- 项目 + ,zzs -- 在职数 + ,bzs -- 编制数 + ,datediff(current_date(),rq) AS datedif -- 结束日期--开始日期 + ,sum(zzs) over(PARTITION BY rq,pq,xm) AS total_zzs -- 累计在职人数 + ,sum(bzs) over(PARTITION BY rq,pq,xm) AS total_bzs -- 累计编制人数 + ,sum(zzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) AS avg_zzs -- 平均在职人数 + ,sum(bzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) AS avg_bzs -- 平均编制人数 + ,CASE WHEN sum(bzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) = 0 THEN 0 + ELSE (sum(zzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq)) / (sum(bzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq)) + END as rate +FROM ods_hr_view_mbl_d +WHERE 1 = 1 + ${IF(LEN(p_area)>0," AND pq IN ('"+JOINARRAY(p_area,"','")+"')", "")} + + +-- ====================================== +-- 员工满编率排名 +-- ====================================== + +SELECT + T.subcompanyname AS subcompanyname + ,ROW_NUMBER() OVER(ORDER BY T.RATE DESC) 排名 + ,T.RATE + ,'0' AS TARGET_RATE +FROM + ( + SELECT + ${IF(LEN(p_area)>0,"c.subcompanyname", "b.subcompanyname")} + ,CASE WHEN SUM(avg_bzs) = 0 THEN 0 ELSE SUM(avg_zzs) / SUM(avg_bzs) END AS RATE + FROM + ( + SELECT + + pq -- 片区 + ,xm -- 项目 + ,zzs -- 在职数 + ,bzs -- 编制数 + ,rq + ,datediff(current_date(),rq) AS datedif -- 结束日期--开始日期 + ,sum(zzs) over(PARTITION BY rq,pq,xm) AS total_zzs -- 累计在职人数 + ,sum(bzs) over(PARTITION BY rq,pq,xm) AS total_bzs -- 累计编制人数 + ,sum(zzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) AS avg_zzs -- 平均在职人数 + ,sum(bzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) AS avg_bzs -- 平均编制人数 + FROM ods_hr_view_mbl_d + WHERE CONCAT(nd,'-',yd) = '${p_ym}' + ${IF(LEN(p_area)>0," AND pq IN ('"+JOINARRAY(p_area,"','")+"')", "")} + )A + LEFT JOIN + ( + SELECT + id + ,subcompanyname + FROM ods_hr_hrmsubcompany_d + )B + ON A.pq = B.id + LEFT JOIN + ( + SELECT + id + ,subcompanyname + FROM ods_hr_hrmsubcompany_d + )C + ON A.xm = C.id + GROUP BY ${IF(LEN(p_area)>0,"c.subcompanyname", "b.subcompanyname")} + )T + + +-- ====================================== +-- 员工离职原因占比 +-- ====================================== + +SELECT + nd -- 年度 + ,jd -- 季度 + ,yd -- 月度 + ,rq -- 日期 + ,zb -- 总部 + ,pq -- 片区 + ,xm -- 项目 + ,lzlx -- 离职类型id + ,lzlxname -- 离职类型名称 + ,lzyy -- 离职原因id + ,lzyyname -- 离职原因名称 + ,lzrs -- 离职人数 +FROM ods_hr_view_lzrs_fl_d +WHERE LEFT(rq,7) = '${p_ym}' + ${IF(LEN(p_area)>0," AND pq IN ('"+JOINARRAY(p_area,"','")+"')", "")} + + +-- ====================================== +-- 人力行政成本费率柱状图 +-- ====================================== + +${if(p_type='人力',"","/*")} +SELECT + T1.yr_month AS yr_month + ,'人力成本' AS name + ,'人力成本费率' AS name_rate + ,RIGHT(T1.yr_month,2) AS MONTHS + ,T1.actual_cost AS actual_cost -- 人力成本 + ,T1.index_income_fact AS index_income_fact -- 实际收入 + ,T1.actual_cost / T1.index_income_fact AS FEE_RATE -- 费率 +FROM +( + SELECT + A.yr_month AS yr_month + ,A.actual_cost + ,b.index_income_fact AS index_income_fact + FROM + ( +-- 费控人力成本科目汇总表 + SELECT + organ_name + ,CONCAT(yearname,'-',monthname) AS yr_month + ,SUM(CASE WHEN fee_type IN('实际值','目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 + from dw.dws_cost_ac_summary_d + WHERE yearname = left('${p_ym}',4) + AND CONCAT(yearname,'-',monthname) < '${p_ym}' + GROUP BY CONCAT(yearname,'-',monthname),organ_name + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + yr_month + ,organ_name + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND LEFT(yr_month,4) = left('${p_ym}',4) + GROUP BY yr_month,organ_name + )B + ON A.yr_month = B.yr_month + AND A.organ_name = B.organ_name + LEFT JOIN + ( + SELECT + id + ,subcompanyname + FROM ods_hr_hrmsubcompany_d + WHERE tlevel = '2' + GROUP BY + id + ,subcompanyname + )C + ON A.organ_name = C.subcompanyname + WHERE 1=1 + ${IF(LEN(p_area)>0," AND C.id IN ('"+JOINARRAY(p_area,"','")+"')", "")} + +)T1 +ORDER BY T1.yr_month +${if(p_type='人力',"","*/")} + +${if(p_type='行政',"","/*")} + +SELECT + T1.yr_month AS yr_month + ,'行政成本' AS name + ,'行政成本费率' AS name_rate + ,RIGHT(T1.yr_month,2) AS MONTHS + ,T1.actual_cost AS actual_cost -- 人力成本 + ,T1.index_income_fact AS index_income_fact -- 实际收入 + ,T1.actual_cost / T1.index_income_fact AS FEE_RATE -- 费率 +FROM +( + SELECT + A.yr_month AS yr_month + ,A.actual_cost AS actual_cost -- 人力成本 + ,B.index_income_fact AS index_income_fact -- 实际收入 + FROM + ( +-- 费控人力成本科目汇总表 + SELECT + organ_name + ,CONCAT(yearname, '-', monthname) AS yr_month + ,SUM(CASE WHEN fee_type IN ('实际值', '目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 + FROM dw.dws_cost_lc_summary_d + WHERE yearname = LEFT('${p_ym}', 4) + AND CONCAT(yearname, '-', monthname) < '${p_ym}' + GROUP BY CONCAT(yearname, '-', monthname),organ_name + ) A + LEFT JOIN + (-- 公司实际收入 + SELECT + yr_month + ,organ_name + , SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND LEFT(yr_month, 4) = LEFT('${p_ym}', 4) + GROUP BY yr_month,organ_name + )B + ON A.yr_month = B.yr_month + AND A.organ_name = B.organ_name + LEFT JOIN + ( + SELECT + id + ,subcompanyname + FROM ods_hr_hrmsubcompany_d + WHERE tlevel = '2' + GROUP BY + id + ,subcompanyname + )C + ON A.organ_name = C.subcompanyname + WHERE 1=1 + ${IF(LEN(p_area)>0," AND C.id IN ('"+JOINARRAY(p_area,"','")+"')", "")} +)T1 +ORDER BY T1.yr_month + +${if(p_type='行政',"","*/")} + + +-- ====================================== +-- 人力行政成本费率排名 +-- ====================================== + + + +${if(p_type='人力',"","/*")} + + SELECT + A.organ_comm_name AS organ_comm_name + ,A.actual_cost AS actual_cost -- 成本 + ,B.index_income_fact AS index_income_fact -- 实际收入 + ,ROW_NUMBER() OVER (ORDER BY A.actual_cost / B.index_income_fact DESC ) AS 排名 -- 费率排名 + ,A.actual_cost / B.index_income_fact AS fee_rate -- 费率 + ,A.budget_actual_cost / B.index_income_target AS target_fee_rate -- 费率目标 + FROM + ( +-- 费控人力成本科目汇总表 + SELECT + ${IF(LEN(p_area)>0,"dimsubjectname", "organ_name")} AS organ_comm_name + ,SUM(CASE WHEN fee_type IN('实际值','目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 + ,SUM(CASE WHEN fee_type = '目标值' THEN total_fee ELSE 0 END) / 10000 AS budget_actual_cost -- 人力成本预算值 + + FROM + ( + SELECT + * + FROM dw.dws_cost_ac_summary_d + WHERE CONCAT(yearname,'-',monthname) = '${LEFT(MONTHDELTA(p_ym,-1),7)}' + )A1 + LEFT JOIN + ( + SELECT + id + ,subcompanyname + FROM ods_hr_hrmsubcompany_d + WHERE tlevel = '2' + GROUP BY + id + ,subcompanyname + )A2 + ON A1.organ_name = A2.subcompanyname + WHERE 1=1 + ${IF(LEN(p_area)>0," AND A2.id IN ('"+JOINARRAY(p_area,"','")+"')", "")} + GROUP BY + ${IF(LEN(p_area)>0,"dimsubjectname", "organ_name")} + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + ${IF(LEN(p_area)>0,"comm_name", "organ_name")} AS organ_comm_name + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + ,SUM(index_income_target) AS index_income_target -- 收入目标 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month = '${LEFT(MONTHDELTA(p_ym,-1),7)}' + GROUP BY + ${IF(LEN(p_area)>0,"comm_name", "organ_name")} + )B + ON A.organ_comm_name = B.organ_comm_name + +${if(p_type='人力',"","*/")} + +${if(p_type='行政',"","/*")} + + + +SELECT + A.organ_comm_name AS organ_comm_name + ,A.actual_cost AS actual_cost -- 成本 + ,B.index_income_fact AS index_income_fact -- 实际收入 + ,ROW_NUMBER() OVER (ORDER BY A.actual_cost / B.index_income_fact DESC ) AS 排名 -- 费率排名 + ,A.actual_cost / B.index_income_fact AS fee_rate -- 费率 + ,A.budget_actual_cost / B.index_income_target AS target_fee_rate -- 费率目标 +FROM + ( +-- 费控人力成本科目汇总表 + SELECT + ${IF(LEN(p_area)>0,"dimsubjectname", "organ_name")} AS organ_comm_name + ,SUM(CASE WHEN fee_type IN('实际值','目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 + ,SUM(CASE WHEN fee_type = '目标值' THEN total_fee ELSE 0 END) / 10000 AS budget_actual_cost -- 人力成本预算值 + + FROM + ( + SELECT + * + FROM dw.dws_cost_lc_summary_d + WHERE CONCAT(yearname,'-',monthname) = '${LEFT(MONTHDELTA(p_ym,-1),7)}' + )A1 + LEFT JOIN + ( + SELECT + id + ,subcompanyname + FROM ods_hr_hrmsubcompany_d + WHERE tlevel = '2' + GROUP BY + id + ,subcompanyname + )A2 + ON A1.organ_name = A2.subcompanyname + WHERE 1=1 + ${IF(LEN(p_area)>0," AND A2.id IN ('"+JOINARRAY(p_area,"','")+"')", "")} + GROUP BY + ${IF(LEN(p_area)>0,"dimsubjectname", "organ_name")} + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + ${IF(LEN(p_area)>0,"comm_name", "organ_name")} AS organ_comm_name + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + ,SUM(index_income_target) AS index_income_target -- 收入目标 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month = '${LEFT(MONTHDELTA(p_ym,-1),7)}' + GROUP BY + ${IF(LEN(p_area)>0,"comm_name", "organ_name")} + )B + ON A.organ_comm_name = B.organ_comm_name + + ${if(p_type='行政',"","*/")} \ No newline at end of file From 1bcba21c50654df9f2e9b9e15d949d53ba262821 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Fri, 25 Oct 2024 18:05:24 +0800 Subject: [PATCH 74/89] =?UTF-8?q?=E4=BA=BA=E5=8A=9B=E7=9C=8B=E6=9D=BF?= =?UTF-8?q?=E6=8C=87=E6=A0=87=E7=AC=AC=E4=BA=8C=E7=89=88:=E4=BD=BF?= =?UTF-8?q?=E7=94=A8=E7=BB=84=E7=BB=87=E6=98=A0=E5=B0=84=E8=A1=A8=E5=85=B3?= =?UTF-8?q?=E8=81=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 4 + dw/dwd/dwd_cost_budget_data_d.sql | 4 +- dw/dws/dws_cost_ac_summary_d.sql | 40 ++-- dw/ods/ods_cost_adjust_data_d.sql | 30 +-- dw/ods/ods_cost_budget_data_d.sql | 24 +- finereport/kanban/pc/人力.sql | 368 ++++++++++++++++-------------- 6 files changed, 238 insertions(+), 232 deletions(-) diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 98b3673..18e797f 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -19,6 +19,8 @@ + + @@ -28,10 +30,12 @@ + + diff --git a/dw/dwd/dwd_cost_budget_data_d.sql b/dw/dwd/dwd_cost_budget_data_d.sql index 590a42c..8f6e229 100644 --- a/dw/dwd/dwd_cost_budget_data_d.sql +++ b/dw/dwd/dwd_cost_budget_data_d.sql @@ -17,9 +17,9 @@ CREATE TABLE IF NOT EXISTS dw.dwd_cost_budget_data_d ( ,budgetfee_rate VARCHAR(50) COMMENT '预算执行率' )COMMENT = '费控预算金额明细表' -------------------------------------- +-- ----------------------------------- -- 费控预算金额明细表转换 -------------------------------------- +-- ----------------------------------- INSERT INTO dw.dwd_cost_budget_data_d select dimaccountcode -- 预算科目编码 diff --git a/dw/dws/dws_cost_ac_summary_d.sql b/dw/dws/dws_cost_ac_summary_d.sql index 616c92f..71b4368 100644 --- a/dw/dws/dws_cost_ac_summary_d.sql +++ b/dw/dws/dws_cost_ac_summary_d.sql @@ -1,25 +1,25 @@ DROP TABLE IF EXISTS dw.dws_cost_ac_summary_d; CREATE TABLE IF NOT EXISTS dw.dws_cost_ac_summary_d ( - yearname VARCHAR(50) COMMENT '年' -,monthname VARCHAR(50) COMMENT '月' -,organ_code VARCHAR(255) COMMENT '片区ID' -,organ_name VARCHAR(255) COMMENT '片区名称' -,dimsubjectcode VARCHAR(255) COMMENT '组织机构编码' -,dimsubjectname VARCHAR(255) COMMENT '组织机构名称' -,office_rent VARCHAR(255) COMMENT '办公室租金' -,office_repair_fee VARCHAR(255) COMMENT '办公维修费' -,office_fee VARCHAR(255) COMMENT '办公费' -,travel_fee VARCHAR(255) COMMENT '差旅费' -,phone_fee VARCHAR(255) COMMENT '电话费' -,ad_fee VARCHAR(255) COMMENT '广告宣传费' -,business_fee VARCHAR(255) COMMENT '业务接待费' -,water_power_fee VARCHAR(255) COMMENT '水电费' -,management_fee VARCHAR(255) COMMENT '物管费' -,book_fee VARCHAR(255) COMMENT '书报资料费' -,other_fee VARCHAR(255) COMMENT '其他费用' -,total_fee VARCHAR(255) COMMENT '当期小计' -,fee_type VARCHAR(50) COMMENT '费用类型' -)COMMENT = '费控人力成本科目汇总表' + 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 = '费控人力成本科目汇总表'; diff --git a/dw/ods/ods_cost_adjust_data_d.sql b/dw/ods/ods_cost_adjust_data_d.sql index 4397526..80d85b3 100644 --- a/dw/ods/ods_cost_adjust_data_d.sql +++ b/dw/ods/ods_cost_adjust_data_d.sql @@ -1,7 +1,7 @@ drop table if exists dw.ods_cost_adjust_data_d; CREATE TABLE IF NOT EXISTS dw.ods_cost_adjust_data_d ( - originalcurrency VARCHAR(255) COMMENT '调整金额' + originalcurrency VARCHAR(255) COMMENT '调整金额' ,dimaccountcode VARCHAR(255) COMMENT '调整预算科目编码' ,dimaccountname VARCHAR(255) COMMENT '调整预算科目名称' ,dimsubjectcode VARCHAR(255) COMMENT '调整组织机构编码' @@ -12,13 +12,13 @@ CREATE TABLE IF NOT EXISTS dw.ods_cost_adjust_data_d ( select - sum(originalcurrency) as originalcurrency --调整金额 - ,dimaccountcode as dimaccountcode --调整预算科目编码 - ,dimaccountname as dimaccountname --调整预算科目名称 - ,DimSubjectcode as DimSubjectcode --调整组织机构编码 - ,DimSubjectname as DimSubjectname --调整组织结构名称 - ,year as year --年 - ,month as month --月 + sum(originalcurrency) as originalcurrency -- 调整金额 + ,dimaccountcode as dimaccountcode -- 调整预算科目编码 + ,dimaccountname as dimaccountname -- 调整预算科目名称 + ,DimSubjectcode as DimSubjectcode -- 调整组织机构编码 + ,DimSubjectname as DimSubjectname -- 调整组织结构名称 + ,year as year -- 年 + ,month as month -- 月 from ( select @@ -30,7 +30,7 @@ from ,substr(d.budgetdetaildate,0,4)as year ,substr(d.budgetdetaildate,6,7)as month ,d.originalcurrency - from e7fssc_ld.t_cc_billmaindata m + from(SELECT * FROM e7fssc_ld.t_cc_billmaindata where billtype=6 and currentstate=21) m left join e7fssc_ld.t_cc_billdetaildata d on d.billmaindataid=d.billmaindataid left join e7fssc_ld.t_cc_object o on o.objectid=d.dimaccount left join e7fssc_ld.t_cc_object o1 on o1.objectid=d.dimsubject @@ -39,12 +39,12 @@ from and budgetdetaildate is not null ) a where 1=1 - ---根据实际业务需求去添加 start --- and a.dimaccountcode='' --调整预算科目编码,如果查该组织机构下所有的科目,把该条件注释掉即可 ---and a.DimSubjectcode='010201011105' --调整预算组织名称 -and a.year='2024' --调整年 ---and a.month='01' --调整月 ----根据实际业务需求去添加 end +-- 根据实际业务需求去添加 start +-- and a.dimaccountcode='' -- 调整预算科目编码,如果查该组织机构下所有的科目,把该条件注释掉即可 +-- and a.DimSubjectcode='010201011105' -- 调整预算组织名称 +and a.year='2024' --调整年 +-- and a.month='01' --调整月 +-- 根据实际业务需求去添加 end group by dimaccountcode ,dimaccountname diff --git a/dw/ods/ods_cost_budget_data_d.sql b/dw/ods/ods_cost_budget_data_d.sql index be57104..4d65ff3 100644 --- a/dw/ods/ods_cost_budget_data_d.sql +++ b/dw/ods/ods_cost_budget_data_d.sql @@ -70,40 +70,33 @@ CREATE TABLE IF NOT EXISTS dw.ods_cost_budget_data_d( ,decbudgetrate VARCHAR(100) COMMENT '12月预算执行率' )COMMENT = '费控预算数据' - +; select - dimaccountcode as dimaccountcode --预算科目编码 + dimaccountcode as dimaccountcode --预算科目编码 ,dimaccountname as dimaccountname --预算科目名称 ,DimSubjectcode as DimSubjectcode --组织机构编码 ,DimSubjectname as DimSubjectname --组织机构名称 ,yearname as yearname --年 ,totalcode as totalcode --组织机构层级编码 - - ,z.Janbuget as Janbuget --1月预算金额 ,z.Janocc as Janocc --1月已占用金额 ,z.Janreal as Janreal --1月已使用金额 ,z.Janbuget-z.Janocc-z.Janreal as Janavailable --1月剩余可用金额 ,case when z.Janbuget<> 0 then (round(((z.Janocc+z.Janreal)/z.Janbuget)*100,2) ||'%') else '0%' end as Janbugetrate --1月预算执行率 - - ,z.Febbudget as Febbudget --2月预算金额 ,z.Febocc as Febocc --2月已占用金额 ,z.Febreal as Febreal --2月已使用金额 ,z.Febbudget-z.Febocc-z.Febreal as Febavailable --2月剩余可用金额 ,case when z.Febbudget<> 0 then (round(((z.Febocc+z.Febreal)/z.Febbudget)*100,2) ||'%') else '0%' end as Febbudgetrate --2月预算执行率 - ,z.Marbudget as Marbudget --3月预算金额 ,z.Marocc as Marocc --3月已占用金额 ,z.Marreal as Marreal --3月已使用金额 ,z.Marbudget-z.Marocc-z.Marreal as Maravailable -- 3月剩余可用金额 ,case when z.Marbudget<> 0 then (round(((z.Marocc+z.Marreal)/z.Marbudget)*100,2) ||'%') else '0%' end as Marbudgetrate --3月预算执行率 - - ,z.Aprilbudget as Aprilbudget --4月预算金额 ,z.Aprilocc as Aprilocc --4月已占用金额 ,z.Aprilreal as Aprilreal --4月已使用金额 @@ -117,50 +110,42 @@ select ,z.Maybudget-z.Mayocc-z.Mayreal as Mayavailable --5月剩余可用金额 ,case when z.Maybudget<> 0 then (round(((z.Mayocc+z.Mayreal)/z.Maybudget)*100,2) ||'%') else '0%' end as Maybudgetrate --5月预算执行率 - ,z.Junebudget as Junebudget --6月预算金额 ,z.Juneocc as Juneocc --6月已占用金额 ,z.Junereal as Junereal --6月已使用金额 ,z.Junebudget-z.Juneocc-z.Junereal as Juneavailable --6月剩余可用金额 ,case when z.Junebudget<> 0 then (round(((z.Juneocc+z.Junereal)/z.Junebudget)*100,2) ||'%') else '0%' end as Junebudgetrate --6月预算执行率 - ,z.Julybudget as Julybudget --7月预算金额 ,z.Julyocc as Julyocc --7月已占用金额 ,z.Julyreal as Julyreal --7月已使用金额 ,z.Julybudget-z.Julyocc-z.Julyreal as Julyavailable --7月剩余可用金额 ,case when z.Julybudget<> 0 then (round(((z.Julyocc+z.Julyreal)/z.Julybudget)*100,2) ||'%') else '0%' end as Julybudgetrate --7月预算执行率 - ,z.Augbudget as Augbudget --8月预算金额 ,z.Augocc as Augocc --8月已占用金额 ,z.Augreal as Augreal --8月已使用金额 ,z.Augbudget-z.Augocc-z.Augreal as Augavailable -- 8月剩余可用金额 ,case when z.Augbudget<> 0 then (round(((z.Augocc+z.Augreal)/z.Augbudget)*100,2) ||'%') else '0%' end as Augbudgetrate --8月预算执行率 - - ,z.Sepbudget as Sepbudget --9月预算金额 ,z.Sepocc as Sepocc --9月已占用金额 ,z.Sepreal as Sepreal --9月已使用金额 ,z.Sepbudget-z.Sepocc-z.Sepreal as Sepavailable --9月剩余可用金额 ,case when z.Sepbudget<> 0 then (round(((z.Sepocc+z.Sepreal)/z.Sepbudget)*100,2) ||'%') else '0%' end as Sepbudgetrate --9月预算执行率 - ,z.Octbudget as Octbudget --10月预算金额 ,z.Octocc as Octocc --10月已占用金额 ,z.Octreal as Octreal --10月已使用金额 ,z.Octbudget-z.Octocc-z.Octreal as Octavailable --10月剩余可用金额 ,case when z.Octbudget<> 0 then (round(((z.Octocc+z.Octreal)/z.Octbudget)*100,2) ||'%') else '0%' end as Octbudgetrate --10月预算执行率 - ,z.Novbudget as Novbudget --11月预算金额 ,z.Novocc as Novocc --11月已占用金额 ,z.Novreal as Novreal --11月已使用金额 ,z.Novbudget-z.Novocc-z.Novreal as Novavailable --11月剩余可用金额 ,case when z.Novbudget<> 0 then (round(((z.Novocc+z.Novreal)/z.Novbudget)*100,2) ||'%') else '0%' end as Novbudgetrate --11月预算执行率 - ,z.Decbudget as Decbudget --12月预算金额 ,z.DecOcc as DecOcc --12月已占用金额 ,z.Decreal as Decreal --12月已使用金额 @@ -299,7 +284,8 @@ from ,totalcode )z -- where条件需要根据实际业务需求去添加 -where z.yearname='2024' +where 1 = 1 +-- AND z.yearname='2024' -- and z.dimsubjectcode='010201011105' and totalcode like '0001,1001,2002,3000%' --注意该条件,本次项目只需要该条件即可 -order by totalcode +-- order by totalcode diff --git a/finereport/kanban/pc/人力.sql b/finereport/kanban/pc/人力.sql index 14dec1e..a415032 100644 --- a/finereport/kanban/pc/人力.sql +++ b/finereport/kanban/pc/人力.sql @@ -67,33 +67,43 @@ FROM third_department -- ====================================== SELECT - SUM(sl) AS SL + SUM(zzs) AS SL FROM ( SELECT - pq - ,zb - ,xm - ,sl - FROM ods_hr_view_zaizhi_all_d -- 在职人数 - WHERE 1=1 - ${IF(LEN(p_area)>0," AND pq IN ('"+JOINARRAY(p_area,"','")+"')", "")} - + pq -- 片区 + ,xm -- 项目 + ,zzs -- 在职人数 + FROM ods_hr_view_mbl_d -- 在职与编制人数 + WHERE left(rq,7) = '${p_ym}' )A - JOIN + LEFT JOIN ( SELECT - * - FROM ods_hr_hrmsubcompany_d + organ_code + ,organ_name + ,comm_id + ,comm_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + FROM dim_organ_mapping_kunan_tmp + + GROUP BY + organ_code + ,organ_name + ,comm_id + ,comm_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name )B - ON A.pq = B.id - JOIN - ( - SELECT - * - FROM ods_hr_hrmsubcompany_d - )C - ON A.xm = C.id + 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,"','")+"')", "")} -- ====================================== -- 指标卡_离职人数 @@ -104,106 +114,83 @@ SELECT FROM ( SELECT - pq - ,zb - ,xm - ,lzrs - ,concat(nd,'-',yd) AS YM + pq -- 片区 + ,xm -- 项目 + ,lzrs -- 离职人数 + ,concat(nd,'-',yd) AS YM -- 年月 FROM ods_hr_view_lzrs_d -- 离职人数 - WHERE concat(nd,'-',yd) = '${p_ym}' - ${IF(LEN(p_area)>0," AND pq IN ('"+JOINARRAY(p_area,"','")+"')", "")} + WHERE left(rq,7) = '${p_ym}' )A - JOIN - ( - SELECT - * - FROM ods_hr_hrmsubcompany_d + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + FROM dim_organ_mapping_kunan_tmp + GROUP BY + organ_code + ,organ_name + ,comm_id + ,comm_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name )B - ON A.pq = B.id - JOIN - ( - SELECT - * - FROM ods_hr_hrmsubcompany_d - )C - ON A.xm = C.id + 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,"','")+"')", "")} -- ====================================== -- 指标卡_人力成本 -- ====================================== - - SELECT - sum(A.total_fee) AS total_fee -FROM - ( - select - organ_name - ,sum(total_fee) AS total_fee - from dw.dws_cost_lc_summary_d - WHERE fee_type = '实际值' - AND concat(yearname,'-',monthname) = '${p_ym}' - GROUP BY - organ_name - )A - LEFT JOIN - ( - SELECT - id - ,subcompanyname - FROM ods_hr_hrmsubcompany_d - WHERE tlevel = '2' - GROUP BY - id - ,subcompanyname - )B - ON A.organ_name = B.subcompanyname -WHERE 1 = 1 - ${IF(LEN(p_area)>0," AND B.id IN ('"+JOINARRAY(p_area,"','")+"')", "")} +sum(total_fee) AS total_fee +from dw.dws_cost_lc_summary_d -- 人力成本实际值 +WHERE fee_type = '实际值' +AND concat(yearname,'-',monthname) = '${p_ym}' +${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} -- ====================================== -- 指标卡_行政成本 -- ====================================== - SELECT - sum(A.total_fee) AS total_fee -FROM - ( - select - organ_name - ,sum(total_fee) AS total_fee - from dw.dws_cost_ac_summary_d - WHERE fee_type = '实际值' - AND concat(yearname,'-',monthname) = '${p_ym}' - GROUP BY - organ_name - )A - LEFT JOIN - ( - SELECT - id - ,subcompanyname - FROM ods_hr_hrmsubcompany_d - WHERE tlevel = '2' - GROUP BY - id - ,subcompanyname - )B - ON A.organ_name = B.subcompanyname -WHERE 1 = 1 - ${IF(LEN(p_area)>0," AND B.id IN ('"+JOINARRAY(p_area,"','")+"')", "")} +sum(total_fee) AS total_fee +FROM dw.dws_cost_ac_summary_d -- 费控行政成本实际值 +WHERE fee_type = '实际值' +AND concat(yearname,'-',monthname) = '${p_ym}' +${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} -- ====================================== -- 员工满编率柱状图 -- ====================================== + SELECT - nd -- 年度 - ,jd -- 季度 - ,yd -- 月度 - ,rq -- 日期 - ,zb -- 总部 + A.yd AS yd -- 月度 + ,A.pq AS pq -- 片区 + ,A.xm AS xm -- 项目 + ,A.zzs AS zzs -- 在职数 + ,A.bzs AS bzs -- 编制数 +,A.datedif AS datedif -- 结束日期--开始日期 +,A.total_zzs AS total_zzs -- 累计在职人数 +,A.total_bzs AS total_bzs -- 累计编制人数 +,A.avg_zzs AS avg_zzs -- 平均在职人数 +,A.avg_bzs AS avg_bzs -- 平均编制人数 +,A.rate AS rate -- 满编率 +FROM +( + SELECT + + yd -- 月度 ,pq -- 片区 ,xm -- 项目 ,zzs -- 在职数 @@ -216,29 +203,51 @@ SELECT ,CASE WHEN sum(bzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) = 0 THEN 0 ELSE (sum(zzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq)) / (sum(bzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq)) END as rate -FROM ods_hr_view_mbl_d -WHERE 1 = 1 - ${IF(LEN(p_area)>0," AND pq IN ('"+JOINARRAY(p_area,"','")+"')", "")} + FROM ods_hr_view_mbl_d +)A +LEFT JOIN +( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,hr_organ_id -- hr片区编码 + ,hr_organ_name -- hr片区名称 + ,hr_comm_id -- hr项目id + ,hr_comm_name -- hr项目名称 + FROM dim_organ_mapping_kunan_tmp + GROUP BY + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name +)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,"','")+"')", "")} -- ====================================== -- 员工满编率排名 -- ====================================== +-- 注意 目前会有一个空的排名 是因为佳美物业未做映射 + SELECT - T.subcompanyname AS subcompanyname - ,ROW_NUMBER() OVER(ORDER BY T.RATE DESC) 排名 - ,T.RATE - ,'0' AS TARGET_RATE + T1.organ_comm AS organ_comm + ,ROW_NUMBER() OVER(ORDER BY T1.RATE DESC) 排名 + ,T1.rate + ,'0' AS target_rate FROM - ( +( SELECT - ${IF(LEN(p_area)>0,"c.subcompanyname", "b.subcompanyname")} + ${IF(LEN(p_area)>0,"B.hr_comm_name", "B.hr_organ_name")} AS organ_comm ,CASE WHEN SUM(avg_bzs) = 0 THEN 0 ELSE SUM(avg_zzs) / SUM(avg_bzs) END AS RATE FROM - ( + ( SELECT - pq -- 片区 ,xm -- 项目 ,zzs -- 在职数 @@ -251,26 +260,34 @@ FROM ,sum(bzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) AS avg_bzs -- 平均编制人数 FROM ods_hr_view_mbl_d WHERE CONCAT(nd,'-',yd) = '${p_ym}' - ${IF(LEN(p_area)>0," AND pq IN ('"+JOINARRAY(p_area,"','")+"')", "")} + -- 注意 目前会有一个空的排名 是因为佳美物业未做映射 + AND pq <> '89' )A - LEFT JOIN + LEFT JOIN ( SELECT - id - ,subcompanyname - FROM ods_hr_hrmsubcompany_d + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,hr_organ_id -- hr片区编码 + ,hr_organ_name -- hr片区名称 + ,hr_comm_id -- hr项目id + ,hr_comm_name -- hr项目名称 + FROM dim_organ_mapping_kunan_tmp + WHERE hr_organ_name IS NOT NULL + GROUP BY + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name )B - ON A.pq = B.id - LEFT JOIN - ( - SELECT - id - ,subcompanyname - FROM ods_hr_hrmsubcompany_d - )C - ON A.xm = C.id - GROUP BY ${IF(LEN(p_area)>0,"c.subcompanyname", "b.subcompanyname")} - )T + ON A.pq = B.hr_organ_id + and A.xm = B.hr_comm_id + ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + + GROUP BY ${IF(LEN(p_area)>0,"B.hr_comm_name", "B.hr_organ_name")} +)T1 -- ====================================== @@ -278,22 +295,46 @@ FROM -- ====================================== SELECT - nd -- 年度 - ,jd -- 季度 - ,yd -- 月度 - ,rq -- 日期 - ,zb -- 总部 - ,pq -- 片区 +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 -- 片区 ,xm -- 项目 ,lzlx -- 离职类型id ,lzlxname -- 离职类型名称 ,lzyy -- 离职原因id ,lzyyname -- 离职原因名称 ,lzrs -- 离职人数 -FROM ods_hr_view_lzrs_fl_d -WHERE LEFT(rq,7) = '${p_ym}' - ${IF(LEN(p_area)>0," AND pq IN ('"+JOINARRAY(p_area,"','")+"')", "")} - + FROM ods_hr_view_lzrs_fl_d + WHERE LEFT(rq,7) = '${p_ym}' +)A +LEFT JOIN +( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,hr_organ_id -- hr片区编码 + ,hr_organ_name -- hr片区名称 + ,hr_comm_id -- hr项目id + ,hr_comm_name -- hr项目名称 + FROM dim_organ_mapping_kunan_tmp + GROUP BY + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name +)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,"','")+"')", "")} -- ====================================== -- 人力行政成本费率柱状图 @@ -318,42 +359,29 @@ FROM ( -- 费控人力成本科目汇总表 SELECT - organ_name + organ_code ,CONCAT(yearname,'-',monthname) AS yr_month ,SUM(CASE WHEN fee_type IN('实际值','目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 from dw.dws_cost_ac_summary_d WHERE yearname = left('${p_ym}',4) AND CONCAT(yearname,'-',monthname) < '${p_ym}' - GROUP BY CONCAT(yearname,'-',monthname),organ_name + GROUP BY CONCAT(yearname,'-',monthname),organ_code )A LEFT JOIN (-- 公司实际收入 SELECT yr_month - ,organ_name + ,organ_code ,SUM(index_income_fact) AS index_income_fact -- 实际收入 FROM ods_caiwu_feecollection WHERE category = '物业' AND LEFT(yr_month,4) = left('${p_ym}',4) - GROUP BY yr_month,organ_name + GROUP BY yr_month,organ_code )B ON A.yr_month = B.yr_month - AND A.organ_name = B.organ_name - LEFT JOIN - ( - SELECT - id - ,subcompanyname - FROM ods_hr_hrmsubcompany_d - WHERE tlevel = '2' - GROUP BY - id - ,subcompanyname - )C - ON A.organ_name = C.subcompanyname - WHERE 1=1 - ${IF(LEN(p_area)>0," AND C.id IN ('"+JOINARRAY(p_area,"','")+"')", "")} - + AND A.organ_code = B.organ_code + WHERE 1 = 1 + ${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} )T1 ORDER BY T1.yr_month ${if(p_type='人力',"","*/")} @@ -378,44 +406,32 @@ FROM ( -- 费控人力成本科目汇总表 SELECT - organ_name + organ_code ,CONCAT(yearname, '-', monthname) AS yr_month ,SUM(CASE WHEN fee_type IN ('实际值', '目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 FROM dw.dws_cost_lc_summary_d WHERE yearname = LEFT('${p_ym}', 4) AND CONCAT(yearname, '-', monthname) < '${p_ym}' - GROUP BY CONCAT(yearname, '-', monthname),organ_name + GROUP BY CONCAT(yearname, '-', monthname),organ_code ) A LEFT JOIN (-- 公司实际收入 SELECT yr_month - ,organ_name + ,organ_code , SUM(index_income_fact) AS index_income_fact -- 实际收入 FROM ods_caiwu_feecollection WHERE category = '物业' AND LEFT(yr_month, 4) = LEFT('${p_ym}', 4) - GROUP BY yr_month,organ_name + GROUP BY yr_month,organ_code )B ON A.yr_month = B.yr_month - AND A.organ_name = B.organ_name - LEFT JOIN - ( - SELECT - id - ,subcompanyname - FROM ods_hr_hrmsubcompany_d - WHERE tlevel = '2' - GROUP BY - id - ,subcompanyname - )C - ON A.organ_name = C.subcompanyname + AND A.organ_code = B.organ_code WHERE 1=1 - ${IF(LEN(p_area)>0," AND C.id IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + )T1 ORDER BY T1.yr_month - ${if(p_type='行政',"","*/")} From bd5308476ce658a72579095a6bbf0dcc6e6635ef Mon Sep 17 00:00:00 2001 From: yangkunan Date: Sat, 26 Oct 2024 23:41:12 +0800 Subject: [PATCH 75/89] =?UTF-8?q?=E5=91=98=E5=B7=A5=E6=BB=A1=E7=BC=96?= =?UTF-8?q?=E7=8E=87=E6=8E=92=E5=90=8D=E6=8C=89=E7=89=87=E5=8C=BA=E5=B1=95?= =?UTF-8?q?=E7=A4=BA=EF=BC=8C=E4=B8=8D=E6=8C=89=E9=A1=B9=E7=9B=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- finereport/kanban/pc/人力.sql | 170 ++++++++++++++++++++++++++-------- 1 file changed, 133 insertions(+), 37 deletions(-) diff --git a/finereport/kanban/pc/人力.sql b/finereport/kanban/pc/人力.sql index a415032..234636a 100644 --- a/finereport/kanban/pc/人力.sql +++ b/finereport/kanban/pc/人力.sql @@ -233,7 +233,7 @@ where 1 = 1 -- 员工满编率排名 -- ====================================== --- 注意 目前会有一个空的排名 是因为佳美物业未做映射 +-- 注意 目前会有空的排名 是因为佳美物业未做映射 SELECT T1.organ_comm AS organ_comm @@ -438,12 +438,11 @@ ${if(p_type='行政',"","*/")} -- ====================================== -- 人力行政成本费率排名 -- ====================================== +-- 这里无法筛选片区时展示对应片区下项目费率的排名 +-- 原因: 费控成本均在各片区智能下,普通项目没有费用,可使用如下sql查询: - - -${if(p_type='人力',"","/*")} - - SELECT +/* +SELECT A.organ_comm_name AS organ_comm_name ,A.actual_cost AS actual_cost -- 成本 ,B.index_income_fact AS index_income_fact -- 实际收入 @@ -454,7 +453,9 @@ ${if(p_type='人力',"","/*")} ( -- 费控人力成本科目汇总表 SELECT - ${IF(LEN(p_area)>0,"dimsubjectname", "organ_name")} AS organ_comm_name + A2.comm_name AS organ_comm_name + ,A2.comm_id AS organ_comm_code + ,A2.cost_comm_name AS cost_comm_name ,SUM(CASE WHEN fee_type IN('实际值','目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 ,SUM(CASE WHEN fee_type = '目标值' THEN total_fee ELSE 0 END) / 10000 AS budget_actual_cost -- 人力成本预算值 @@ -463,38 +464,117 @@ ${if(p_type='人力',"","/*")} SELECT * FROM dw.dws_cost_ac_summary_d - WHERE CONCAT(yearname,'-',monthname) = '${LEFT(MONTHDELTA(p_ym,-1),7)}' + WHERE CONCAT(yearname,'-',monthname) = '2024-09' )A1 - LEFT JOIN + LEFT JOIN ( SELECT - id - ,subcompanyname - FROM ods_hr_hrmsubcompany_d - WHERE tlevel = '2' + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,comm_id + ,comm_name + ,cost_comm_id -- 费控项目id + ,cost_comm_name -- 费控项目名称 + FROM dim_organ_mapping_kunan_tmp GROUP BY - id - ,subcompanyname + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,comm_id + ,comm_name + ,cost_comm_id -- 费控项目id + ,cost_comm_name -- 费控项目名称 )A2 - ON A1.organ_name = A2.subcompanyname + ON A1.organ_code = A2.organ_code + AND A1.dimsubjectcode = A2.cost_comm_id WHERE 1=1 - ${IF(LEN(p_area)>0," AND A2.id IN ('"+JOINARRAY(p_area,"','")+"')", "")} + -- AND A2.organ_code IN ('0102') GROUP BY - ${IF(LEN(p_area)>0,"dimsubjectname", "organ_name")} + A2.comm_name + ,A2.comm_id + ,A2.cost_comm_name )A LEFT JOIN (-- 公司实际收入 SELECT - ${IF(LEN(p_area)>0,"comm_name", "organ_name")} AS organ_comm_name + comm_name AS organ_comm_name + ,comm_id AS organ_comm_code + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + ,SUM(index_income_target) AS index_income_target -- 收入目标 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month = '2024-09' + GROUP BY + comm_name + ,comm_id + )B + ON A.organ_comm_code = B.organ_comm_code + */ + + + +${if(p_type='人力',"","/*")} + + SELECT + A.organ_name AS organ_comm_name + ,A.actual_cost AS actual_cost -- 成本 + ,B.index_income_fact AS index_income_fact -- 实际收入 + ,ROW_NUMBER() OVER (ORDER BY A.actual_cost / B.index_income_fact DESC ) AS 排名 -- 费率排名 + ,A.actual_cost / B.index_income_fact AS fee_rate -- 费率 + ,A.budget_actual_cost / B.index_income_target AS target_fee_rate -- 费率目标 + FROM + ( +-- 费控人力成本科目汇总表 + SELECT + A1.organ_code + ,A1.organ_name + -- ${IF(LEN(p_area)>0,"dimsubjectname", "organ_name")} AS organ_comm_name + ,SUM(CASE WHEN fee_type IN('实际值','目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 + ,SUM(CASE WHEN fee_type = '目标值' THEN total_fee ELSE 0 END) / 10000 AS budget_actual_cost -- 人力成本预算值 + FROM + ( + SELECT + * + FROM dw.dws_cost_ac_summary_d -- 费控人力成本科目汇总表 + WHERE CONCAT(yearname,'-',monthname) = '${LEFT(MONTHDELTA(p_ym,-1),7)}' -- 取上月数据 + )A1 + LEFT JOIN + ( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,cost_comm_id + ,cost_comm_name + FROM dim_organ_mapping_kunan_tmp + GROUP BY + organ_code + ,organ_name + ,cost_comm_id + ,cost_comm_name + )A2 + ON A1.organ_code = A2.organ_code + -- AND A1.dimsubjectcode = A2.cost_comm_id + WHERE 1=1 + -- ${IF(LEN(p_area)>0," AND A2.id IN ('"+JOINARRAY(p_area,"','")+"')", "")} + GROUP BY + A1.organ_code + ,A1.organ_name + -- ${IF(LEN(p_area)>0,"dimsubjectname", "organ_name")} + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + -- ${IF(LEN(p_area)>0,"comm_name", "organ_name")} AS organ_comm_name + 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 yr_month = '${LEFT(MONTHDELTA(p_ym,-1),7)}' GROUP BY - ${IF(LEN(p_area)>0,"comm_name", "organ_name")} + -- ${IF(LEN(p_area)>0,"comm_name", "organ_name")} + organ_code )B - ON A.organ_comm_name = B.organ_comm_name + ON A.organ_code = B.organ_code ${if(p_type='人力',"","*/")} @@ -503,7 +583,7 @@ ${if(p_type='行政',"","/*")} SELECT - A.organ_comm_name AS organ_comm_name + A.organ_name AS organ_comm_name ,A.actual_cost AS actual_cost -- 成本 ,B.index_income_fact AS index_income_fact -- 实际收入 ,ROW_NUMBER() OVER (ORDER BY A.actual_cost / B.index_income_fact DESC ) AS 排名 -- 费率排名 @@ -513,7 +593,10 @@ FROM ( -- 费控人力成本科目汇总表 SELECT - ${IF(LEN(p_area)>0,"dimsubjectname", "organ_name")} AS organ_comm_name + -- ${IF(LEN(p_area)>0,"A2.comm_name", "A1.organ_name")} AS organ_comm_name + -- ${IF(LEN(p_area)>0,",A2.comm_id", ",A1.organ_code")} AS organ_comm_code + A1.organ_code + ,A1.organ_name ,SUM(CASE WHEN fee_type IN('实际值','目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 ,SUM(CASE WHEN fee_type = '目标值' THEN total_fee ELSE 0 END) / 10000 AS budget_actual_cost -- 人力成本预算值 @@ -524,35 +607,48 @@ FROM FROM dw.dws_cost_lc_summary_d WHERE CONCAT(yearname,'-',monthname) = '${LEFT(MONTHDELTA(p_ym,-1),7)}' )A1 - LEFT JOIN + LEFT JOIN ( SELECT - id - ,subcompanyname - FROM ods_hr_hrmsubcompany_d - WHERE tlevel = '2' + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,comm_id + ,comm_name + ,cost_comm_id + ,cost_comm_name + FROM dim_organ_mapping_kunan_tmp GROUP BY - id - ,subcompanyname + organ_code + ,organ_name + ,comm_id + ,comm_name + ,cost_comm_id + ,cost_comm_name )A2 - ON A1.organ_name = A2.subcompanyname + ON A1.organ_code = A2.organ_code + -- AND A1.dimsubjectcode = A2.cost_comm_id WHERE 1=1 - ${IF(LEN(p_area)>0," AND A2.id IN ('"+JOINARRAY(p_area,"','")+"')", "")} + -- ${IF(LEN(p_area)>0," AND A2.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} GROUP BY - ${IF(LEN(p_area)>0,"dimsubjectname", "organ_name")} + A1.organ_code + ,A1.organ_name + -- ${IF(LEN(p_area)>0,"A2.comm_name", "A1.organ_name")} + -- ${IF(LEN(p_area)>0,",A2.comm_id", ",A1.organ_code")} )A LEFT JOIN (-- 公司实际收入 SELECT - ${IF(LEN(p_area)>0,"comm_name", "organ_name")} AS organ_comm_name + -- ${IF(LEN(p_area)>0,"comm_id", "organ_code")} AS organ_comm_code + 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 yr_month = '${LEFT(MONTHDELTA(p_ym,-1),7)}' GROUP BY - ${IF(LEN(p_area)>0,"comm_name", "organ_name")} + organ_code + -- ${IF(LEN(p_area)>0,"comm_id", "organ_code")} )B - ON A.organ_comm_name = B.organ_comm_name + ON A.organ_code = B.organ_code - ${if(p_type='行政',"","*/")} \ No newline at end of file + ${if(p_type='行政',"","*/")} From 2c583cc42a824be1140da2de53646634084db9ae Mon Sep 17 00:00:00 2001 From: yangkunan Date: Sun, 27 Oct 2024 11:54:22 +0800 Subject: [PATCH 76/89] =?UTF-8?q?=E7=A6=BB=E8=81=8C=E7=8E=87=E6=8E=92?= =?UTF-8?q?=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- finereport/kanban/pc/人力.sql | 70 +++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/finereport/kanban/pc/人力.sql b/finereport/kanban/pc/人力.sql index 234636a..9447603 100644 --- a/finereport/kanban/pc/人力.sql +++ b/finereport/kanban/pc/人力.sql @@ -652,3 +652,73 @@ FROM ON A.organ_code = B.organ_code ${if(p_type='行政',"","*/")} + + + +-- ====================================== +-- 离职率排名 +-- ====================================== + + +SELECT + T.hr_organ_name AS hr_organ_name + ,T.lz_rate AS lz_rate + ,0 AS lz_rate_target + ,ROW_NUMBER() OVER(ORDER BY T.lz_rate desc) AS 排名 +FROM + ( + SELECT + ${IF(LEN(p_area)>0,"B.hr_comm_name", "hr_organ_name")} AS hr_organ_name + ,CASE WHEN ((SUM(StartOfmonth_zzrs) + SUM(EndOfmonth_zsrs)) / 2) = 0 THEN 0 + ELSE SUM(zlzrs) / ((SUM(StartOfmonth_zzrs) + SUM(EndOfmonth_zsrs)) / 2) + END AS lz_rate + + FROM + ( + SELECT + nd -- 年度 + ,jd -- 季度 + ,yd -- 月度 + ,rq -- 日期 + ,zb -- 总部 + ,pq -- 片区 + ,xm -- 项目 + ,zzrs -- 当天在职人数 + ,zdlzrs -- 当天主动离职人数 + ,bdlzrs -- 当天被动离职人数 + ,zlzrs -- 当天总离职人数 + ,CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END AS StartOfmonth_zzrs -- 月初在职人数 + ,CASE WHEN rq = LAST_DAY(CONCAT('${p_ym}','-01')) THEN zzrs ELSE 0 END AS EndOfmonth_zsrs -- 月末在职人数 + FROM ods_hr_view_lzbl_d + WHERE LEFT(rq,7) = '${p_ym}' + AND pq not in('89','153','267') + -- 排除了: + -- 89:佳美物业公司 + -- 153:领悦集团总部 + -- 267:悦汇发展公司 + )A + LEFT JOIN + ( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,hr_organ_id -- hr片区编码 + ,hr_organ_name -- hr片区名称 + ,hr_comm_id -- hr项目id + ,hr_comm_name -- hr项目名称 + FROM dim_organ_mapping_kunan_tmp + GROUP BY + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + )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 + ${IF(LEN(p_area)>0,"B.hr_comm_name", "hr_organ_name")} + )T \ No newline at end of file From c33ed1cdead05002c0723ec2681845279d2dfd91 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Mon, 28 Oct 2024 17:31:37 +0800 Subject: [PATCH 77/89] =?UTF-8?q?=E6=98=8E=E7=BB=86=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 3 + finereport/kanban/pc/人力.sql | 205 ++++++++++++++- .../tianbao/5_manpower/人力看板目标值填报.sql | 35 +++ .../xiazuan/5_manpower/2_员工满编率明细.sql | 62 +++++ .../xiazuan/5_manpower/3_员工离职率明细.sql | 61 +++++ .../5_manpower/4_人力行政成本费率明细.sql | 142 +++++++++++ .../xiazuan/5_manpower/5_在职人员明细.sql | 239 ++++++++++++++++++ 7 files changed, 746 insertions(+), 1 deletion(-) create mode 100644 finereport/tianbao/5_manpower/人力看板目标值填报.sql create mode 100644 finereport/xiazuan/5_manpower/2_员工满编率明细.sql create mode 100644 finereport/xiazuan/5_manpower/3_员工离职率明细.sql create mode 100644 finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql create mode 100644 finereport/xiazuan/5_manpower/5_在职人员明细.sql diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 18e797f..92c3800 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -42,6 +42,7 @@ + @@ -51,6 +52,8 @@ + + diff --git a/finereport/kanban/pc/人力.sql b/finereport/kanban/pc/人力.sql index 9447603..a3955f2 100644 --- a/finereport/kanban/pc/人力.sql +++ b/finereport/kanban/pc/人力.sql @@ -721,4 +721,207 @@ FROM ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} GROUP BY ${IF(LEN(p_area)>0,"B.hr_comm_name", "hr_organ_name")} - )T \ No newline at end of file + )T + + + + +-- ====================================== +-- 指标卡_人力成本费率/目标值 +-- ====================================== + +SELECT + SUM(T1.actual_cost) AS actual_cost -- 人力成本 + ,SUM(T1.index_income_fact) AS index_income_fact -- 实际收入 + ,sum(T1.actual_cost) / sum(T1.index_income_fact) AS FEE_RATE -- 费率 + ,0 AS fee_rate_target +FROM + ( + SELECT + A.yr_month AS yr_month + ,A.actual_cost + ,b.index_income_fact AS index_income_fact + FROM + ( + -- 费控人力成本科目汇总表 + SELECT + organ_code + ,CONCAT(yearname,'-',monthname) AS yr_month + ,SUM(CASE WHEN fee_type IN('实际值','目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 + from dw.dws_cost_ac_summary_d + WHERE CONCAT(yearname,'-',monthname) = '${LEFT(MONTHDELTA(p_ym,-1),7)}' + GROUP BY CONCAT(yearname,'-',monthname),organ_code + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + yr_month + ,organ_code + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month = '${LEFT(MONTHDELTA(p_ym,-1),7)}' + GROUP BY yr_month,organ_code + )B + ON A.yr_month = 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,"','")+"')", "")} + )T1 + + + +-- ====================================== +-- 指标卡_行政成本费率/目标值 +-- ====================================== + + + +SELECT + SUM(T1.actual_cost) AS actual_cost -- 行政成本 + ,SUM(T1.index_income_fact) AS index_income_fact -- 实际收入 + ,SUM(T1.actual_cost) / SUM(T1.index_income_fact) AS FEE_RATE -- 费率 + ,0 AS fee_rate_target +FROM +( + SELECT + A.yr_month AS yr_month + ,A.actual_cost AS actual_cost -- 人力成本 + ,B.index_income_fact AS index_income_fact -- 实际收入 + FROM + ( +-- 费控行政成本科目汇总表 + SELECT + organ_code + ,CONCAT(yearname, '-', monthname) AS yr_month + ,SUM(CASE WHEN fee_type IN ('实际值', '目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 + FROM dw.dws_cost_lc_summary_d + WHERE CONCAT(yearname, '-', monthname) = '${LEFT(MONTHDELTA(p_ym,-1),7)}' + GROUP BY CONCAT(yearname, '-', monthname),organ_code + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + yr_month + ,organ_code + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month = '${LEFT(MONTHDELTA(p_ym,-1),7)}' + GROUP BY yr_month,organ_code + )B + ON A.yr_month = B.yr_month + AND A.organ_code = B.organ_code + WHERE 1=1 + ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + + )T1 + + +-- ====================================== +-- 指标卡_在职人数满编率/目标值 +-- ====================================== + + +SELECT +CASE WHEN SUM(avg_bzs) = 0 THEN 0 ELSE SUM(avg_zzs) / SUM(avg_bzs) END AS full_rate -- 满编率 +,0 AS full_rate_target +FROM +( + SELECT + pq -- 片区 + ,xm -- 项目 + ,zzs -- 在职数 + ,bzs -- 编制数 + ,rq + ,datediff(current_date(),rq) AS datedif -- 结束日期--开始日期 + ,sum(zzs) over(PARTITION BY rq,pq,xm) AS total_zzs -- 累计在职人数 + ,sum(bzs) over(PARTITION BY rq,pq,xm) AS total_bzs -- 累计编制人数 + ,sum(zzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) AS avg_zzs -- 平均在职人数 + ,sum(bzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) AS avg_bzs -- 平均编制人数 + FROM ods_hr_view_mbl_d + WHERE CONCAT(nd,'-',yd) = '${p_ym}' + -- 注意 目前会有一个空的排名 是因为佳美物业未做映射 + AND pq <> '89' +)A +LEFT JOIN +( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,hr_organ_id -- hr片区编码 + ,hr_organ_name -- hr片区名称 + ,hr_comm_id -- hr项目id + ,hr_comm_name -- hr项目名称 + FROM dim_organ_mapping_kunan_tmp + WHERE hr_organ_name IS NOT NULL + GROUP BY + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name +)B +ON A.pq = B.hr_organ_id +and A.xm = B.hr_comm_id +${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + + + +-- ====================================== +-- 指标卡_离职人数离职率/目标值 +-- ====================================== + + +SELECT +CASE WHEN ((SUM(StartOfmonth_zzrs) + SUM(EndOfmonth_zsrs)) / 2) = 0 THEN 0 + ELSE SUM(zlzrs) / ((SUM(StartOfmonth_zzrs) + SUM(EndOfmonth_zsrs)) / 2) + END AS lz_rate +,0 AS lz_rate_target +FROM +( + SELECT + nd -- 年度 + ,jd -- 季度 + ,yd -- 月度 + ,rq -- 日期 + ,zb -- 总部 + ,pq -- 片区 + ,xm -- 项目 + ,zzrs -- 当天在职人数 + ,zdlzrs -- 当天主动离职人数 + ,bdlzrs -- 当天被动离职人数 + ,zlzrs -- 当天总离职人数 + ,CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END AS StartOfmonth_zzrs -- 月初在职人数 + ,CASE WHEN rq = LAST_DAY(CONCAT('${p_ym}','-01')) THEN zzrs ELSE 0 END AS EndOfmonth_zsrs -- 月末在职人数 + FROM ods_hr_view_lzbl_d + WHERE LEFT(rq,7) = '${p_ym}' + AND pq not in('89','153','267') + -- 排除了: + -- 89:佳美物业公司 + -- 153:领悦集团总部 + -- 267:悦汇发展公司 +)A +LEFT JOIN +( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,hr_organ_id -- hr片区编码 + ,hr_organ_name -- hr片区名称 + ,hr_comm_id -- hr项目id + ,hr_comm_name -- hr项目名称 + FROM dim_organ_mapping_kunan_tmp + GROUP BY + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name +)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,"','")+"')", "")} diff --git a/finereport/tianbao/5_manpower/人力看板目标值填报.sql b/finereport/tianbao/5_manpower/人力看板目标值填报.sql new file mode 100644 index 0000000..c48ae52 --- /dev/null +++ b/finereport/tianbao/5_manpower/人力看板目标值填报.sql @@ -0,0 +1,35 @@ + + +CREATE TABLE ods_hr_collection_target ( + id int NOT NULL AUTO_INCREMENT COMMENT '主键(自增)' +,organ_code varchar(50) COMMENT 'erp片区code' +,organ_name varchar(100) COMMENT 'erp片区名称' +,comm_id varchar(50) COMMENT '项目id' +,comm_name varchar(100) COMMENT '项目名称' +,ym varchar(50) COMMENT '日期(yyyy-MM格式)' +,full_rate_target decimal(28,10) COMMENT '满编率目标' +,lz_rate_target decimal(28,10) COMMENT '离职率目标' +,lc_fee_rate_target decimal(28,10) COMMENT '人力成本费率目标' +,ac_fee_rate_target decimal(28,10) COMMENT '行政成本费率目标' +,update_by varchar(50) COMMENT '数据更新人' +,update_time datetime COMMENT '数据更新时间' +,PRIMARY KEY (id) +) COMMENT='人力目标值填报'; + +SELECT + organ_code -- erp片区code +,organ_name -- erp片区名称 +,comm_id -- 项目id +,comm_name -- 项目名称 +,ym -- 日期(yyyy-MM格式) +,full_rate_target -- 满编率目标 +,lz_rate_target -- 离职率目标 +,lc_fee_rate_target -- 人力成本费率目标 +,ac_fee_rate_target -- 行政成本费率目标 +FROM ods_hr_collection_target +WHERE ym = '${p_ym}' + + + + VALUE("dict_片区",1,2,B2) + VALUE("dict_片区_项目",3,4,C2) \ No newline at end of file diff --git a/finereport/xiazuan/5_manpower/2_员工满编率明细.sql b/finereport/xiazuan/5_manpower/2_员工满编率明细.sql new file mode 100644 index 0000000..23c9078 --- /dev/null +++ b/finereport/xiazuan/5_manpower/2_员工满编率明细.sql @@ -0,0 +1,62 @@ + +SELECT +T1.hr_comm_name AS hr_comm_name +,T1.hr_organ_name AS hr_organ_name +,T1.bzs AS bzs -- 当月编制数 +,T1.zzs AS zzs -- 当月在职数 +,'0' AS target_full_rate -- 月均满编率目标 +,CASE when T1.bzs = 0 then 0 else T1.zzs / T1.bzs end AS full_rate -- 月度满编率 +,'0' AS target_rate -- 月均满编率目标 +,T1.rate AS rate -- 月均满编率实际 +FROM +( + SELECT + B.hr_comm_name AS hr_comm_name + ,B.hr_organ_name AS hr_organ_name + ,SUM(A.bzs) AS bzs + ,SUM(A.zzs) AS zzs + ,CASE WHEN SUM(avg_bzs) = 0 THEN 0 ELSE SUM(avg_zzs) / SUM(avg_bzs) END AS RATE + FROM + ( + SELECT + pq -- 片区 + ,xm -- 项目 + ,zzs -- 在职数 + ,bzs -- 编制数 + ,rq + ,datediff(current_date(),rq) AS datedif -- 结束日期--开始日期 + ,sum(zzs) over(PARTITION BY rq,pq,xm) AS total_zzs -- 累计在职人数 + ,sum(bzs) over(PARTITION BY rq,pq,xm) AS total_bzs -- 累计编制人数 + ,sum(zzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) AS avg_zzs -- 平均在职人数 + ,sum(bzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) AS avg_bzs -- 平均编制人数 + FROM ods_hr_view_mbl_d + WHERE CONCAT(nd,'-',yd) = '${p_ym}' + -- 注意 目前会有一个空的排名 是因为佳美物业未做映射 + AND pq <> '89' + )A + LEFT JOIN + ( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,hr_organ_id -- hr片区编码 + ,hr_organ_name -- hr片区名称 + ,hr_comm_id -- hr项目id + ,hr_comm_name -- hr项目名称 + FROM dim_organ_mapping_kunan_tmp + WHERE hr_organ_name IS NOT NULL + GROUP BY + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + )B + ON A.pq = B.hr_organ_id + and A.xm = B.hr_comm_id + ${IF(LEN(p_area)>0," AND B.organ_code IN ('" + p_area +"')", "")} + GROUP BY + B.hr_comm_name + ,B.hr_organ_name +)T1 \ No newline at end of file diff --git a/finereport/xiazuan/5_manpower/3_员工离职率明细.sql b/finereport/xiazuan/5_manpower/3_员工离职率明细.sql new file mode 100644 index 0000000..f1353d4 --- /dev/null +++ b/finereport/xiazuan/5_manpower/3_员工离职率明细.sql @@ -0,0 +1,61 @@ + + + +SELECT +${IF(LEN(p_area)>0,"B.hr_comm_name", "hr_organ_name")} AS hr_organ_name +,CASE WHEN ((SUM(StartOfmonth_zzrs) + SUM(EndOfmonth_zsrs)) / 2) = 0 THEN 0 + ELSE SUM(zlzrs) / ((SUM(StartOfmonth_zzrs) + SUM(EndOfmonth_zsrs)) / 2) + END AS lz_rate +,SUM(StartOfmonth_zzrs) AS StartOfmonth_zzrs -- 月初在职人数 +,SUM(EndOfmonth_zsrs) AS EndOfmonth_zsrs -- 月末在职人数 +,sum(zdlzrs) AS zdlzrs -- 主动离职人数 +,sum(bdlzrs) AS bdlzrs -- 当天被动离职人数 +,SUM(zlzrs) AS zlzrs -- 总离职人数 +FROM +( + SELECT + nd -- 年度 + ,jd -- 季度 + ,yd -- 月度 + ,rq -- 日期 + ,zb -- 总部 + ,pq -- 片区 + ,xm -- 项目 + ,zzrs -- 当天在职人数 + ,zdlzrs -- 当天主动离职人数 + ,bdlzrs -- 当天被动离职人数 + ,zlzrs -- 当天总离职人数 + ,CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END AS StartOfmonth_zzrs -- 月初在职人数 + ,CASE WHEN rq = LAST_DAY(CONCAT('${p_ym}','-01')) THEN zzrs ELSE 0 END AS EndOfmonth_zsrs -- 月末在职人数 + FROM ods_hr_view_lzbl_d + WHERE LEFT(rq,7) = '${p_ym}' + AND pq not in('89','153','267') + -- 排除了: + -- 89:佳美物业公司 + -- 153:领悦集团总部 + -- 267:悦汇发展公司 +)A +LEFT JOIN +( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,hr_organ_id -- hr片区编码 + ,hr_organ_name -- hr片区名称 + ,hr_comm_id -- hr项目id + ,hr_comm_name -- hr项目名称 + FROM dim_organ_mapping_kunan_tmp + GROUP BY + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name +)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 ('" + p_area +"')", "")} +GROUP BY +${IF(LEN(p_area)>0,"B.hr_comm_name", "hr_organ_name")} diff --git a/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql b/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql new file mode 100644 index 0000000..5164b0c --- /dev/null +++ b/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql @@ -0,0 +1,142 @@ + +${if(p_type='人力',"","/*")} + +SELECT + A.organ_name AS organ_comm_name + ,A.actual_cost AS actual_cost -- 成本 + ,B.index_income_fact AS index_income_fact -- 实际收入 + ,ROW_NUMBER() OVER (ORDER BY A.actual_cost / B.index_income_fact DESC ) AS 排名 -- 费率排名 + ,A.actual_cost / B.index_income_fact AS fee_rate -- 费率 + ,A.budget_actual_cost / B.index_income_target AS target_fee_rate -- 费率目标 +FROM + ( +-- 费控人力成本科目汇总表 + SELECT + A1.organ_code + ,A1.organ_name + -- ${IF(LEN(p_area)>0,"dimsubjectname", "organ_name")} AS organ_comm_name + ,SUM(CASE WHEN fee_type IN('实际值','目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 + ,SUM(CASE WHEN fee_type = '目标值' THEN total_fee ELSE 0 END) / 10000 AS budget_actual_cost -- 人力成本预算值 + FROM + ( + SELECT + * + FROM dw.dws_cost_ac_summary_d -- 费控人力成本科目汇总表 + WHERE CONCAT(yearname,'-',monthname) = '${LEFT(MONTHDELTA(p_ym,-1),7)}' -- 取上月数据 + )A1 + LEFT JOIN + ( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,cost_comm_id + ,cost_comm_name + FROM dim_organ_mapping_kunan_tmp + GROUP BY + organ_code + ,organ_name + ,cost_comm_id + ,cost_comm_name + )A2 + ON A1.organ_code = A2.organ_code + -- AND A1.dimsubjectcode = A2.cost_comm_id + WHERE 1=1 + -- ${IF(LEN(p_area)>0," AND A2.id IN ('"+JOINARRAY(p_area,"','")+"')", "")} + GROUP BY + A1.organ_code + ,A1.organ_name + -- ${IF(LEN(p_area)>0,"dimsubjectname", "organ_name")} + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + -- ${IF(LEN(p_area)>0,"comm_name", "organ_name")} AS organ_comm_name + 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 yr_month = '${LEFT(MONTHDELTA(p_ym,-1),7)}' + GROUP BY + -- ${IF(LEN(p_area)>0,"comm_name", "organ_name")} + organ_code + )B + ON A.organ_code = B.organ_code + + ${if(p_type='人力',"","*/")} + + ${if(p_type='行政',"","/*")} + + + +SELECT + A.organ_name AS organ_comm_name + ,A.actual_cost AS actual_cost -- 成本 + ,B.index_income_fact AS index_income_fact -- 实际收入 + ,ROW_NUMBER() OVER (ORDER BY A.actual_cost / B.index_income_fact DESC ) AS 排名 -- 费率排名 + ,A.actual_cost / B.index_income_fact AS fee_rate -- 费率 + ,A.budget_actual_cost / B.index_income_target AS target_fee_rate -- 费率目标 +FROM + ( +-- 费控人力成本科目汇总表 + SELECT + -- ${IF(LEN(p_area)>0,"A2.comm_name", "A1.organ_name")} AS organ_comm_name + -- ${IF(LEN(p_area)>0,",A2.comm_id", ",A1.organ_code")} AS organ_comm_code + A1.organ_code + ,A1.organ_name + ,SUM(CASE WHEN fee_type IN('实际值','目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 + ,SUM(CASE WHEN fee_type = '目标值' THEN total_fee ELSE 0 END) / 10000 AS budget_actual_cost -- 人力成本预算值 + + FROM + ( + SELECT + * + FROM dw.dws_cost_lc_summary_d + WHERE CONCAT(yearname,'-',monthname) = '${LEFT(MONTHDELTA(p_ym,-1),7)}' + )A1 + LEFT JOIN + ( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,comm_id + ,comm_name + ,cost_comm_id + ,cost_comm_name + FROM dim_organ_mapping_kunan_tmp + GROUP BY + organ_code + ,organ_name + ,comm_id + ,comm_name + ,cost_comm_id + ,cost_comm_name + )A2 + ON A1.organ_code = A2.organ_code + -- AND A1.dimsubjectcode = A2.cost_comm_id + WHERE 1=1 + -- ${IF(LEN(p_area)>0," AND A2.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + GROUP BY + A1.organ_code + ,A1.organ_name + -- ${IF(LEN(p_area)>0,"A2.comm_name", "A1.organ_name")} + -- ${IF(LEN(p_area)>0,",A2.comm_id", ",A1.organ_code")} + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + -- ${IF(LEN(p_area)>0,"comm_id", "organ_code")} AS organ_comm_code + 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 yr_month = '${LEFT(MONTHDELTA(p_ym,-1),7)}' + GROUP BY + organ_code + -- ${IF(LEN(p_area)>0,"comm_id", "organ_code")} + )B + ON A.organ_code = B.organ_code + + ${if(p_type='行政',"","*/")} + diff --git a/finereport/xiazuan/5_manpower/5_在职人员明细.sql b/finereport/xiazuan/5_manpower/5_在职人员明细.sql new file mode 100644 index 0000000..3c13b62 --- /dev/null +++ b/finereport/xiazuan/5_manpower/5_在职人员明细.sql @@ -0,0 +1,239 @@ +-- ====================================== +-- 年龄分布 +-- ====================================== + +SELECT +nld +,sum(sl) AS sl +FROM +( +SELECT +zb -- 总部 +,pq -- 片区 +,xm -- 项目 +,nld -- 年龄段 +,sl -- 数量 +FROM ods_hr_view_nld_d +)A +LEFT JOIN +( + SELECT + organ_code + ,hr_organ_id + ,hr_comm_id + FROM dim_organ_mapping_kunan_tmp + GROUP BY + organ_code + ,hr_organ_id + ,hr_comm_id + +)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 nld + + + +-- ====================================== +-- 司龄分布 +-- ====================================== + +SELECT + sld + ,sum(sl) AS sl +FROM + ( + SELECT + zb -- 总部 + ,pq -- 片区 + ,xm -- 项目 + ,sld -- 司龄段 + ,sl -- 数量 + FROM ods_hr_view_sld_d + )A + LEFT JOIN + ( + SELECT + organ_code + ,hr_organ_id + ,hr_comm_id + FROM dim_organ_mapping_kunan_tmp + GROUP BY + organ_code + ,hr_organ_id + ,hr_comm_id + + )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 sld + + + + + +-- ====================================== +-- 学历分布 +-- ====================================== + + +SELECT + xl + ,sum(sl) AS sl +FROM + ( + SELECT + zb -- 总部 + ,pq -- 片区 + ,xm -- 项目 + ,xl -- 学历 + ,sl -- 数量 + FROM ods_hr_view_xl_d + )A + LEFT JOIN + ( + SELECT + organ_code + ,hr_organ_id + ,hr_comm_id + FROM dim_organ_mapping_kunan_tmp + GROUP BY + organ_code + ,hr_organ_id + ,hr_comm_id + + )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 xl + + + +-- ====================================== +-- 职务角色 +-- ====================================== + + +SELECT + zwje + ,sum(sl) AS sl +FROM + ( + SELECT + zb -- 总部 + ,pq -- 片区 + ,xm -- 项目 + ,zwje -- 职务角色 + ,sl -- 数量 + FROM dw.ods_hr_view_zwjs_d + )A + LEFT JOIN + ( + SELECT + organ_code + ,hr_organ_id + ,hr_comm_id + FROM dim_organ_mapping_kunan_tmp + GROUP BY + organ_code + ,hr_organ_id + ,hr_comm_id + + )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 zwje + + + + + + +-- ====================================== +-- 职务层级 +-- ====================================== + + +SELECT + swtx + ,sum(sl) AS sl +FROM + ( + SELECT + zb -- 总部 + ,pq -- 片区 + ,xm -- 项目 + ,swtx -- 职务层级 + ,sl -- 数量 + FROM dw.ods_hr_view_swtx_d + )A + LEFT JOIN + ( + SELECT + organ_code + ,hr_organ_id + ,hr_comm_id + FROM dim_organ_mapping_kunan_tmp + GROUP BY + organ_code + ,hr_organ_id + ,hr_comm_id + + )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 swtx + + + + + +-- ====================================== +-- 一级专业条线 +-- ====================================== + + +SELECT + zytx + ,sum(sl) AS sl +FROM + ( + SELECT + zb -- 总部 + ,pq -- 片区 + ,xm -- 项目 + ,zytx -- 一级专业条线 + ,sl -- 数量 + FROM dw.ods_hr_view_zytx_d + )A + LEFT JOIN + ( + SELECT + organ_code + ,hr_organ_id + ,hr_comm_id + FROM dim_organ_mapping_kunan_tmp + GROUP BY + organ_code + ,hr_organ_id + ,hr_comm_id + + )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 zytx + + + From 0d27b3c0eab5d1925bfbf7597cd8b3ebc14bdd17 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 29 Oct 2024 16:54:07 +0800 Subject: [PATCH 78/89] =?UTF-8?q?=E6=98=8E=E7=BB=86=E8=A1=A8=E3=80=81?= =?UTF-8?q?=E7=9C=8B=E6=9D=BF=E6=98=A0=E5=B0=84=E8=A1=A8=E5=88=87=E6=8D=A2?= =?UTF-8?q?=E6=AD=A3=E5=BC=8F=E6=98=A0=E5=B0=84=E8=A1=A8+=E6=94=AF?= =?UTF-8?q?=E6=8C=81=E6=80=BB=E9=83=A8=E7=AD=9B=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/dataSources.xml | 12 + .idea/sqldialects.xml | 1 + finereport/kanban/pc/人力.sql | 290 ++++++++++-------- .../tianbao/5_manpower/人力看板目标值填报.sql | 8 +- .../xiazuan/5_manpower/2_员工满编率明细.sql | 26 +- .../xiazuan/5_manpower/3_员工离职率明细.sql | 69 ++++- .../xiazuan/5_manpower/5_在职人员明细.sql | 127 +++++++- 7 files changed, 388 insertions(+), 145 deletions(-) diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml index c12c47d..2fb7519 100644 --- a/.idea/dataSources.xml +++ b/.idea/dataSources.xml @@ -52,5 +52,17 @@ $ProjectFileDir$ + + sqlserver.ms + true + com.microsoft.sqlserver.jdbc.SQLServerDriver + jdbc:sqlserver://172.18.96.50:1433 + + + + + + $ProjectFileDir$ + \ No newline at end of file diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 92c3800..5edfc00 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -52,6 +52,7 @@ + diff --git a/finereport/kanban/pc/人力.sql b/finereport/kanban/pc/人力.sql index a3955f2..bb09d07 100644 --- a/finereport/kanban/pc/人力.sql +++ b/finereport/kanban/pc/人力.sql @@ -82,23 +82,26 @@ FROM SELECT organ_code ,organ_name - ,comm_id - ,comm_name ,hr_organ_id ,hr_organ_name ,hr_comm_id ,hr_comm_name - FROM dim_organ_mapping_kunan_tmp - + FROM dim_organ_mapping GROUP BY organ_code ,organ_name - ,comm_id - ,comm_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 @@ -124,24 +127,28 @@ FROM LEFT JOIN ( SELECT - organ_code - ,organ_name - ,comm_id - ,comm_name - ,hr_organ_id - ,hr_organ_name - ,hr_comm_id - ,hr_comm_name - FROM dim_organ_mapping_kunan_tmp - GROUP BY - organ_code - ,organ_name - ,comm_id - ,comm_name - ,hr_organ_id - ,hr_organ_name - ,hr_comm_id - ,hr_comm_name + 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 @@ -180,12 +187,8 @@ SELECT ,A.xm AS xm -- 项目 ,A.zzs AS zzs -- 在职数 ,A.bzs AS bzs -- 编制数 -,A.datedif AS datedif -- 结束日期--开始日期 -,A.total_zzs AS total_zzs -- 累计在职人数 -,A.total_bzs AS total_bzs -- 累计编制人数 -,A.avg_zzs AS avg_zzs -- 平均在职人数 -,A.avg_bzs AS avg_bzs -- 平均编制人数 -,A.rate AS rate -- 满编率 + ,CASE WHEN A.bzs = 0 THEN 0 + ELSE A.zzs / A.bzs END AS rate -- 满编率 FROM ( SELECT @@ -195,38 +198,39 @@ FROM ,xm -- 项目 ,zzs -- 在职数 ,bzs -- 编制数 - ,datediff(current_date(),rq) AS datedif -- 结束日期--开始日期 - ,sum(zzs) over(PARTITION BY rq,pq,xm) AS total_zzs -- 累计在职人数 - ,sum(bzs) over(PARTITION BY rq,pq,xm) AS total_bzs -- 累计编制人数 - ,sum(zzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) AS avg_zzs -- 平均在职人数 - ,sum(bzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) AS avg_bzs -- 平均编制人数 - ,CASE WHEN sum(bzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) = 0 THEN 0 - ELSE (sum(zzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq)) / (sum(bzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq)) - END as rate FROM ods_hr_view_mbl_d + where nd = left('${p_ym}',4) )A LEFT JOIN ( - SELECT - organ_code -- erp片区编码 - ,organ_name -- erp片区名称 - ,hr_organ_id -- hr片区编码 - ,hr_organ_name -- hr片区名称 - ,hr_comm_id -- hr项目id - ,hr_comm_name -- hr项目名称 - FROM dim_organ_mapping_kunan_tmp - GROUP BY - organ_code - ,organ_name - ,hr_organ_id - ,hr_organ_name - ,hr_comm_id - ,hr_comm_name + 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,"','")+"')", "")} +${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} -- ====================================== @@ -244,7 +248,7 @@ FROM ( SELECT ${IF(LEN(p_area)>0,"B.hr_comm_name", "B.hr_organ_name")} AS organ_comm - ,CASE WHEN SUM(avg_bzs) = 0 THEN 0 ELSE SUM(avg_zzs) / SUM(avg_bzs) END AS RATE + ,CASE WHEN SUM(bzs) = 0 THEN 0 ELSE SUM(zzs) / SUM(bzs) END AS RATE FROM ( SELECT @@ -252,38 +256,41 @@ FROM ,xm -- 项目 ,zzs -- 在职数 ,bzs -- 编制数 - ,rq - ,datediff(current_date(),rq) AS datedif -- 结束日期--开始日期 - ,sum(zzs) over(PARTITION BY rq,pq,xm) AS total_zzs -- 累计在职人数 - ,sum(bzs) over(PARTITION BY rq,pq,xm) AS total_bzs -- 累计编制人数 - ,sum(zzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) AS avg_zzs -- 平均在职人数 - ,sum(bzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) AS avg_bzs -- 平均编制人数 + ,rq -- 日期 FROM ods_hr_view_mbl_d - WHERE CONCAT(nd,'-',yd) = '${p_ym}' + WHERE rq = '${p_ym}' -- 注意 目前会有一个空的排名 是因为佳美物业未做映射 - AND pq <> '89' + AND pq NOT IN ('89','267') -- 这里剔除了佳美物业公司/悦汇发展公司 )A LEFT JOIN ( SELECT - organ_code -- erp片区编码 - ,organ_name -- erp片区名称 - ,hr_organ_id -- hr片区编码 - ,hr_organ_name -- hr片区名称 - ,hr_comm_id -- hr项目id - ,hr_comm_name -- hr项目名称 - FROM dim_organ_mapping_kunan_tmp - WHERE hr_organ_name IS NOT NULL + 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 + 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 ${IF(LEN(p_area)>0,"B.hr_comm_name", "B.hr_organ_name")} @@ -316,13 +323,13 @@ FROM LEFT JOIN ( SELECT - organ_code -- erp片区编码 - ,organ_name -- erp片区名称 - ,hr_organ_id -- hr片区编码 - ,hr_organ_name -- hr片区名称 - ,hr_comm_id -- hr项目id - ,hr_comm_name -- hr项目名称 - FROM dim_organ_mapping_kunan_tmp + 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 @@ -330,6 +337,14 @@ LEFT JOIN ,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 @@ -691,7 +706,7 @@ FROM ,CASE WHEN rq = LAST_DAY(CONCAT('${p_ym}','-01')) THEN zzrs ELSE 0 END AS EndOfmonth_zsrs -- 月末在职人数 FROM ods_hr_view_lzbl_d WHERE LEFT(rq,7) = '${p_ym}' - AND pq not in('89','153','267') + AND pq not in('89','267') -- 排除了: -- 89:佳美物业公司 -- 153:领悦集团总部 @@ -700,13 +715,13 @@ FROM LEFT JOIN ( SELECT - organ_code -- erp片区编码 - ,organ_name -- erp片区名称 - ,hr_organ_id -- hr片区编码 - ,hr_organ_name -- hr片区名称 - ,hr_comm_id -- hr项目id - ,hr_comm_name -- hr项目名称 - FROM dim_organ_mapping_kunan_tmp + 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 @@ -714,6 +729,14 @@ FROM ,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 @@ -822,10 +845,9 @@ FROM -- 指标卡_在职人数满编率/目标值 -- ====================================== - SELECT -CASE WHEN SUM(avg_bzs) = 0 THEN 0 ELSE SUM(avg_zzs) / SUM(avg_bzs) END AS full_rate -- 满编率 -,0 AS full_rate_target +CASE WHEN SUM(bzs) = 0 THEN 0 ELSE SUM(zzs) / SUM(bzs) END AS full_rate -- 满编率 +,0 AS full_rate_target -- 满编率目标值 FROM ( SELECT @@ -833,16 +855,10 @@ FROM ,xm -- 项目 ,zzs -- 在职数 ,bzs -- 编制数 - ,rq - ,datediff(current_date(),rq) AS datedif -- 结束日期--开始日期 - ,sum(zzs) over(PARTITION BY rq,pq,xm) AS total_zzs -- 累计在职人数 - ,sum(bzs) over(PARTITION BY rq,pq,xm) AS total_bzs -- 累计编制人数 - ,sum(zzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) AS avg_zzs -- 平均在职人数 - ,sum(bzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) AS avg_bzs -- 平均编制人数 FROM ods_hr_view_mbl_d - WHERE CONCAT(nd,'-',yd) = '${p_ym}' + WHERE rq = '${p_ym}' -- 注意 目前会有一个空的排名 是因为佳美物业未做映射 - AND pq <> '89' + AND pq not in('89','267') -- 排除了佳美、悦汇 )A LEFT JOIN ( @@ -853,8 +869,7 @@ LEFT JOIN ,hr_organ_name -- hr片区名称 ,hr_comm_id -- hr项目id ,hr_comm_name -- hr项目名称 - FROM dim_organ_mapping_kunan_tmp - WHERE hr_organ_name IS NOT NULL + FROM dim_organ_mapping GROUP BY organ_code ,organ_name @@ -862,9 +877,36 @@ LEFT JOIN ,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 + organ_code -- erp片区code + ,organ_name -- erp片区名称 + ,comm_id -- 项目id + ,comm_name -- 项目名称 + ,ym -- 日期(yyyy-MM格式) + ,full_rate_target -- 满编率目标 + ,lz_rate_target -- 离职率目标 + ,lc_fee_rate_target -- 人力成本费率目标 + ,ac_fee_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,"','")+"')", "")} @@ -878,7 +920,7 @@ SELECT CASE WHEN ((SUM(StartOfmonth_zzrs) + SUM(EndOfmonth_zsrs)) / 2) = 0 THEN 0 ELSE SUM(zlzrs) / ((SUM(StartOfmonth_zzrs) + SUM(EndOfmonth_zsrs)) / 2) END AS lz_rate -,0 AS lz_rate_target +,'0.002' AS lz_rate_target FROM ( SELECT @@ -897,7 +939,7 @@ FROM ,CASE WHEN rq = LAST_DAY(CONCAT('${p_ym}','-01')) THEN zzrs ELSE 0 END AS EndOfmonth_zsrs -- 月末在职人数 FROM ods_hr_view_lzbl_d WHERE LEFT(rq,7) = '${p_ym}' - AND pq not in('89','153','267') + AND pq not in('89','267') -- 排除了佳美、悦汇 -- 排除了: -- 89:佳美物业公司 -- 153:领悦集团总部 @@ -906,20 +948,28 @@ FROM LEFT JOIN ( SELECT - organ_code -- erp片区编码 - ,organ_name -- erp片区名称 - ,hr_organ_id -- hr片区编码 - ,hr_organ_name -- hr片区名称 - ,hr_comm_id -- hr项目id - ,hr_comm_name -- hr项目名称 - FROM dim_organ_mapping_kunan_tmp + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,hr_organ_id -- hr片区编码 + ,hr_organ_name -- hr片区名称 + ,hr_comm_id -- hr项目id + ,hr_comm_name -- hr项目名称 + FROM dim_organ_mapping GROUP BY - organ_code - ,organ_name - ,hr_organ_id - ,hr_organ_name - ,hr_comm_id - ,hr_comm_name + 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 diff --git a/finereport/tianbao/5_manpower/人力看板目标值填报.sql b/finereport/tianbao/5_manpower/人力看板目标值填报.sql index c48ae52..757e81e 100644 --- a/finereport/tianbao/5_manpower/人力看板目标值填报.sql +++ b/finereport/tianbao/5_manpower/人力看板目标值填报.sql @@ -28,8 +28,10 @@ SELECT ,ac_fee_rate_target -- 行政成本费率目标 FROM ods_hr_collection_target WHERE ym = '${p_ym}' +; + +TRUNCATE TABLE ods_hr_collection_target; - - VALUE("dict_片区",1,2,B2) - VALUE("dict_片区_项目",3,4,C2) \ No newline at end of file +-- VALUE("dict_片区",1,2,B2) +-- VALUE("dict_片区_项目",3,4,C2) \ No newline at end of file diff --git a/finereport/xiazuan/5_manpower/2_员工满编率明细.sql b/finereport/xiazuan/5_manpower/2_员工满编率明细.sql index 23c9078..0a962f5 100644 --- a/finereport/xiazuan/5_manpower/2_员工满编率明细.sql +++ b/finereport/xiazuan/5_manpower/2_员工满编率明细.sql @@ -15,7 +15,7 @@ FROM ,B.hr_organ_name AS hr_organ_name ,SUM(A.bzs) AS bzs ,SUM(A.zzs) AS zzs - ,CASE WHEN SUM(avg_bzs) = 0 THEN 0 ELSE SUM(avg_zzs) / SUM(avg_bzs) END AS RATE + ,CASE WHEN SUM(bzs) = 0 THEN 0 ELSE SUM(zzs) / SUM(bzs) END AS RATE FROM ( SELECT @@ -24,15 +24,10 @@ FROM ,zzs -- 在职数 ,bzs -- 编制数 ,rq - ,datediff(current_date(),rq) AS datedif -- 结束日期--开始日期 - ,sum(zzs) over(PARTITION BY rq,pq,xm) AS total_zzs -- 累计在职人数 - ,sum(bzs) over(PARTITION BY rq,pq,xm) AS total_bzs -- 累计编制人数 - ,sum(zzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) AS avg_zzs -- 平均在职人数 - ,sum(bzs) over(PARTITION BY rq,pq,xm) / datediff(current_date(),rq) AS avg_bzs -- 平均编制人数 FROM ods_hr_view_mbl_d - WHERE CONCAT(nd,'-',yd) = '${p_ym}' + WHERE rq = '${p_ym}' -- 注意 目前会有一个空的排名 是因为佳美物业未做映射 - AND pq <> '89' + AND pq NOT IN('89','267') )A LEFT JOIN ( @@ -43,7 +38,7 @@ FROM ,hr_organ_name -- hr片区名称 ,hr_comm_id -- hr项目id ,hr_comm_name -- hr项目名称 - FROM dim_organ_mapping_kunan_tmp + FROM dim_organ_mapping WHERE hr_organ_name IS NOT NULL GROUP BY organ_code @@ -52,9 +47,20 @@ FROM ,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项目名称 + FROM dual )B - ON A.pq = B.hr_organ_id + 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 ('" + p_area +"')", "")} GROUP BY B.hr_comm_name diff --git a/finereport/xiazuan/5_manpower/3_员工离职率明细.sql b/finereport/xiazuan/5_manpower/3_员工离职率明细.sql index f1353d4..af22985 100644 --- a/finereport/xiazuan/5_manpower/3_员工离职率明细.sql +++ b/finereport/xiazuan/5_manpower/3_员工离职率明细.sql @@ -1,6 +1,3 @@ - - - SELECT ${IF(LEN(p_area)>0,"B.hr_comm_name", "hr_organ_name")} AS hr_organ_name ,CASE WHEN ((SUM(StartOfmonth_zzrs) + SUM(EndOfmonth_zsrs)) / 2) = 0 THEN 0 @@ -29,7 +26,7 @@ FROM ,CASE WHEN rq = LAST_DAY(CONCAT('${p_ym}','-01')) THEN zzrs ELSE 0 END AS EndOfmonth_zsrs -- 月末在职人数 FROM ods_hr_view_lzbl_d WHERE LEFT(rq,7) = '${p_ym}' - AND pq not in('89','153','267') + AND pq not in('89','267') -- 排除了: -- 89:佳美物业公司 -- 153:领悦集团总部 @@ -44,7 +41,7 @@ LEFT JOIN ,hr_organ_name -- hr片区名称 ,hr_comm_id -- hr项目id ,hr_comm_name -- hr项目名称 - FROM dim_organ_mapping_kunan_tmp + FROM dim_organ_mapping GROUP BY organ_code ,organ_name @@ -52,6 +49,15 @@ LEFT JOIN ,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项目名称 + FROM dual )B ON A.pq = B.hr_organ_id and A.xm = b.hr_comm_id @@ -59,3 +65,56 @@ where 1 = 1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('" + p_area +"')", "")} GROUP BY ${IF(LEN(p_area)>0,"B.hr_comm_name", "hr_organ_name")} + +-- 离职原因占比 + +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 -- 片区 + ,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 -- erp片区编码 + ,organ_name -- erp片区名称 + ,hr_organ_id -- hr片区编码 + ,hr_organ_name -- hr片区名称 + ,hr_comm_id -- hr项目id + ,hr_comm_name -- hr项目名称 + 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,"','")+"')", "")} + diff --git a/finereport/xiazuan/5_manpower/5_在职人员明细.sql b/finereport/xiazuan/5_manpower/5_在职人员明细.sql index 3c13b62..39da933 100644 --- a/finereport/xiazuan/5_manpower/5_在职人员明细.sql +++ b/finereport/xiazuan/5_manpower/5_在职人员明细.sql @@ -21,11 +21,17 @@ LEFT JOIN organ_code ,hr_organ_id ,hr_comm_id - FROM dim_organ_mapping_kunan_tmp + FROM dim_organ_mapping GROUP BY organ_code ,hr_organ_id ,hr_comm_id + UNION ALL + SELECT + '0000' AS organ_code -- erp片区编码 + ,'153' AS hr_organ_id -- hr片区编码 + ,'153' AS hr_comm_id -- hr项目id + FROM dual )B ON A.pq = B.hr_organ_id @@ -59,11 +65,17 @@ FROM organ_code ,hr_organ_id ,hr_comm_id - FROM dim_organ_mapping_kunan_tmp + FROM dim_organ_mapping GROUP BY organ_code ,hr_organ_id ,hr_comm_id + UNION ALL + SELECT + '0000' AS organ_code -- erp片区编码 + ,'153' AS hr_organ_id -- hr片区编码 + ,'153' AS hr_comm_id -- hr项目id + FROM dual )B ON A.pq = B.hr_organ_id @@ -100,11 +112,17 @@ FROM organ_code ,hr_organ_id ,hr_comm_id - FROM dim_organ_mapping_kunan_tmp + FROM dim_organ_mapping GROUP BY organ_code ,hr_organ_id ,hr_comm_id + UNION ALL + SELECT + '0000' AS organ_code -- erp片区编码 + ,'153' AS hr_organ_id -- hr片区编码 + ,'153' AS hr_comm_id -- hr项目id + FROM dual )B ON A.pq = B.hr_organ_id @@ -139,11 +157,17 @@ FROM organ_code ,hr_organ_id ,hr_comm_id - FROM dim_organ_mapping_kunan_tmp + FROM dim_organ_mapping GROUP BY organ_code ,hr_organ_id ,hr_comm_id + UNION ALL + SELECT + '0000' AS organ_code -- erp片区编码 + ,'153' AS hr_organ_id -- hr片区编码 + ,'153' AS hr_comm_id -- hr项目id + FROM dual )B ON A.pq = B.hr_organ_id @@ -181,12 +205,17 @@ FROM organ_code ,hr_organ_id ,hr_comm_id - FROM dim_organ_mapping_kunan_tmp + FROM dim_organ_mapping GROUP BY organ_code ,hr_organ_id ,hr_comm_id - + UNION ALL + SELECT + '0000' AS organ_code -- erp片区编码 + ,'153' AS hr_organ_id -- hr片区编码 + ,'153' AS hr_comm_id -- hr项目id + FROM dual )B ON A.pq = B.hr_organ_id and A.xm = b.hr_comm_id @@ -222,11 +251,17 @@ FROM organ_code ,hr_organ_id ,hr_comm_id - FROM dim_organ_mapping_kunan_tmp + FROM dim_organ_mapping GROUP BY organ_code ,hr_organ_id ,hr_comm_id + UNION ALL + SELECT + '0000' AS organ_code -- erp片区编码 + ,'153' AS hr_organ_id -- hr片区编码 + ,'153' AS hr_comm_id -- hr项目id + FROM dual )B ON A.pq = B.hr_organ_id @@ -234,6 +269,84 @@ FROM where 1 = 1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} GROUP BY zytx +; +-- ====================================== +-- 人员明细 +-- ====================================== +SELECT + A.pq AS pq -- 片区 + ,B.hr_organ_name AS hr_organ_name + ,A.xm AS xm -- 项目 + ,B.hr_comm_name AS hr_comm_name + ,A.bm AS bm -- 部门id + ,A.bmmc AS bmmc -- 部门名称 + ,A.gwid AS gwid -- 岗位id + ,A.gwmc AS gwmc -- 岗位名称 + ,A.id AS id -- 人员id + ,A.workcode AS workcode -- 工号 + ,A.lastname AS lastname -- 姓名 + ,A.nl AS nl -- 年龄 + ,A.sl AS sl -- 司龄 + ,A.zwid AS zwid -- 职务角色id + ,A.zwmc AS zwmc -- 职务角色名称 + ,A.zytxid AS zytxid -- 专业条线id + ,A.zytxmc AS zytxmc -- 专业条线名称 + ,A.zycjid AS zycjid -- 职员层级id + ,A.zycjname AS zycjname -- 职员层级名称 +FROM +( + SELECT + pq -- 片区 + ,xm -- 项目 + ,bm -- 部门id + ,bmmc -- 部门名称 + ,gwid -- 岗位id + ,gwmc -- 岗位名称 + ,id -- 人员id + ,workcode -- 工号 + ,lastname -- 姓名 + ,nl -- 年龄 + ,sl -- 司龄 + ,zwid -- 职务角色id + ,zwmc -- 职务角色名称 + ,zytxid -- 专业条线id + ,zytxmc -- 专业条线名称 + ,zycjid -- 职员层级id + ,zycjname -- 职员层级名称 + FROM ods_hr_view_zaizhi_user_d + WHERE LEFT(ny,7) = '${p_ym}' +)A +LEFT JOIN +( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,hr_organ_id -- hr片区编码 + ,hr_organ_name -- hr片区名称 + ,hr_comm_id -- hr项目id + ,hr_comm_name -- hr项目名称 + 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项目名称 + FROM dual +)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 ('"+ p_area +"')", "")} \ No newline at end of file From ed9e566ae11a67fe78b8fae2f087361474f14285 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Wed, 30 Oct 2024 21:51:55 +0800 Subject: [PATCH 79/89] =?UTF-8?q?=E7=9B=AE=E6=A0=87=E5=80=BC=E5=A1=AB?= =?UTF-8?q?=E6=8A=A5=E5=8F=8A=E8=B4=B9=E6=8E=A7=E6=95=B0=E6=8D=AE=E5=A1=AB?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 4 ++ ...板目标值填报.sql => 2_人力看板目标值填报.sql} | 10 ++-- .../3_人力看板目标值填报-公司整体.sql | 34 +++++++++++++ .../5_manpower/4_人力看板目标值填报-片区.sql | 37 ++++++++++++++ .../5_manpower/5_费控人力行政成本填报.sql | 44 ++++++++++++++++ .../tianbao/5_manpower/6_费控目标值填报.sql | 50 +++++++++++++++++++ 6 files changed, 174 insertions(+), 5 deletions(-) rename finereport/tianbao/5_manpower/{人力看板目标值填报.sql => 2_人力看板目标值填报.sql} (82%) create mode 100644 finereport/tianbao/5_manpower/3_人力看板目标值填报-公司整体.sql create mode 100644 finereport/tianbao/5_manpower/4_人力看板目标值填报-片区.sql create mode 100644 finereport/tianbao/5_manpower/5_费控人力行政成本填报.sql create mode 100644 finereport/tianbao/5_manpower/6_费控目标值填报.sql diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 5edfc00..5c3a239 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -42,6 +42,10 @@ + + + + diff --git a/finereport/tianbao/5_manpower/人力看板目标值填报.sql b/finereport/tianbao/5_manpower/2_人力看板目标值填报.sql similarity index 82% rename from finereport/tianbao/5_manpower/人力看板目标值填报.sql rename to finereport/tianbao/5_manpower/2_人力看板目标值填报.sql index 757e81e..814750a 100644 --- a/finereport/tianbao/5_manpower/人力看板目标值填报.sql +++ b/finereport/tianbao/5_manpower/2_人力看板目标值填报.sql @@ -1,4 +1,4 @@ - +DROP TABLE ods_hr_collection_target; CREATE TABLE ods_hr_collection_target ( id int NOT NULL AUTO_INCREMENT COMMENT '主键(自增)' @@ -8,9 +8,8 @@ CREATE TABLE ods_hr_collection_target ( ,comm_name varchar(100) COMMENT '项目名称' ,ym varchar(50) COMMENT '日期(yyyy-MM格式)' ,full_rate_target decimal(28,10) COMMENT '满编率目标' +,avg_full_rate_target decimal(28,10) COMMENT '月均满编率目标值' ,lz_rate_target decimal(28,10) COMMENT '离职率目标' -,lc_fee_rate_target decimal(28,10) COMMENT '人力成本费率目标' -,ac_fee_rate_target decimal(28,10) COMMENT '行政成本费率目标' ,update_by varchar(50) COMMENT '数据更新人' ,update_time datetime COMMENT '数据更新时间' ,PRIMARY KEY (id) @@ -23,13 +22,14 @@ SELECT ,comm_name -- 项目名称 ,ym -- 日期(yyyy-MM格式) ,full_rate_target -- 满编率目标 +,avg_full_rate_target -- 月均满编率目标值 ,lz_rate_target -- 离职率目标 -,lc_fee_rate_target -- 人力成本费率目标 -,ac_fee_rate_target -- 行政成本费率目标 FROM ods_hr_collection_target WHERE ym = '${p_ym}' ; +SELECT * FROM ods_hr_collection_target + TRUNCATE TABLE ods_hr_collection_target; diff --git a/finereport/tianbao/5_manpower/3_人力看板目标值填报-公司整体.sql b/finereport/tianbao/5_manpower/3_人力看板目标值填报-公司整体.sql new file mode 100644 index 0000000..3a1a7f6 --- /dev/null +++ b/finereport/tianbao/5_manpower/3_人力看板目标值填报-公司整体.sql @@ -0,0 +1,34 @@ + +-- ====================================== +-- 目标值公司整体填报 +-- ====================================== + + +CREATE TABLE ods_hr_collection_target_overall ( + id int NOT NULL AUTO_INCREMENT COMMENT '主键(自增)' +,ym varchar(50) COMMENT '日期(yyyy-MM格式)' +,full_rate_target decimal(28,10) COMMENT '满编率目标' +,lz_rate_target decimal(28,10) COMMENT '离职率目标' +,lc_fee_rate_target decimal(28,10) COMMENT '人力成本费率目标' +,ac_fee_rate_target decimal(28,10) COMMENT '行政成本费率目标' +,update_by varchar(50) COMMENT '数据更新人' +,update_time datetime COMMENT '数据更新时间' +,PRIMARY KEY (id) +) COMMENT='人力目标值填报-公司整体'; + +SELECT + ym -- 日期(yyyy-MM格式) +,full_rate_target -- 满编率目标 +,lz_rate_target -- 离职率目标 +,lc_fee_rate_target -- 人力成本费率目标 +,ac_fee_rate_target -- 行政成本费率目标 +FROM ods_hr_collection_target_overall +WHERE ym = '${p_ym}' +; + +SELECT * FROM ods_hr_collection_target_overall +TRUNCATE TABLE ods_hr_collection_target_overall; + + +-- VALUE("dict_片区",1,2,B2) +-- VALUE("dict_片区_项目",3,4,C2) \ No newline at end of file diff --git a/finereport/tianbao/5_manpower/4_人力看板目标值填报-片区.sql b/finereport/tianbao/5_manpower/4_人力看板目标值填报-片区.sql new file mode 100644 index 0000000..14261fb --- /dev/null +++ b/finereport/tianbao/5_manpower/4_人力看板目标值填报-片区.sql @@ -0,0 +1,37 @@ +DROP TABLE ods_hr_collection_target_organ; + +CREATE TABLE ods_hr_collection_target_organ ( + id int NOT NULL AUTO_INCREMENT COMMENT '主键(自增)' +,organ_code varchar(50) COMMENT 'erp片区code' +,organ_name varchar(100) COMMENT 'erp片区名称' +,ym varchar(50) COMMENT '日期(yyyy-MM格式)' +,full_rate_target decimal(28,10) COMMENT '满编率目标' +,avg_full_rate_target decimal(28,10) COMMENT '月均满编率目标值' +,lz_rate_target decimal(28,10) COMMENT '离职率目标' +,lc_fee_rate_target decimal(28,10) COMMENT '人力成本费率目标' +,ac_fee_rate_target decimal(28,10) COMMENT '行政成本费率目标' +,update_by varchar(50) COMMENT '数据更新人' +,update_time datetime COMMENT '数据更新时间' +,PRIMARY KEY (id) +) COMMENT='人力目标值填报-片区'; + +SELECT + organ_code -- erp片区code +,organ_name -- erp片区名称 +,ym -- 日期(yyyy-MM格式) +,full_rate_target -- 满编率目标 +,avg_full_rate_target -- 月均满编率目标值 +,lz_rate_target -- 离职率目标 +,lc_fee_rate_target -- 人力成本费率目标 +,ac_fee_rate_target -- 行政成本费率目标 +FROM ods_hr_collection_target_organ +WHERE ym = '${p_ym}' +; + +SELECT * FROM ods_hr_collection_target_organ; + +TRUNCATE TABLE ods_hr_collection_target_organ; + + +-- VALUE("dict_片区",1,2,B2) +-- VALUE("dict_片区_项目",3,4,C2) \ No newline at end of file diff --git a/finereport/tianbao/5_manpower/5_费控人力行政成本填报.sql b/finereport/tianbao/5_manpower/5_费控人力行政成本填报.sql new file mode 100644 index 0000000..6aaa888 --- /dev/null +++ b/finereport/tianbao/5_manpower/5_费控人力行政成本填报.sql @@ -0,0 +1,44 @@ + +CREATE TABLE ods_cost_collection_lc_ac ( + id int NOT NULL AUTO_INCREMENT COMMENT '主键(自增)' + ,organ_code varchar(50) COMMENT 'erp片区code' + ,organ_name varchar(100) COMMENT 'erp片区名称' + ,comm_id varchar(50) COMMENT '项目id' + ,comm_name varchar(100) COMMENT '项目名称' + ,ym varchar(50) COMMENT '日期(yyyy-MM格式)' + ,cost_type varchar(50) COMMENT '成本类型' + ,budget_amount decimal(28,10) COMMENT '成本预算值' + ,actual_amount decimal(28,10) COMMENT '成本实际值' + ,update_by varchar(50) COMMENT '数据更新人' + ,update_time datetime COMMENT '数据更新时间' + ,PRIMARY KEY (id) +) COMMENT='费控人力行政成本填报表'; + + + + +SELECT + organ_code -- erp片区code + ,organ_name -- erp片区名称 + ,comm_id -- 项目id + ,comm_name -- 项目名称 + ,ym -- 日期(yyyy-MM格式) + ,cost_type -- 成本类型 + ,budget_amount -- 成本预算值 + ,actual_amount -- 成本实际值' +FROM ods_cost_collection_lc_ac +WHERE ym = '${p_ym}' +AND cost_type = '${p_type}' + + + + + + + +TRUNCATE TABLE ods_cost_collection_lc_ac; + +SELECT * FROM ods_cost_collection_lc_ac +-- VALUE("dict_片区",1,2,B2) +-- VALUE("dict_片区_项目",3,4,C2) + diff --git a/finereport/tianbao/5_manpower/6_费控目标值填报.sql b/finereport/tianbao/5_manpower/6_费控目标值填报.sql new file mode 100644 index 0000000..dccd685 --- /dev/null +++ b/finereport/tianbao/5_manpower/6_费控目标值填报.sql @@ -0,0 +1,50 @@ +DROP TABLE ods_cost_collection_target; + +CREATE TABLE ods_cost_collection_target ( + id int NOT NULL AUTO_INCREMENT COMMENT '主键(自增)' +,organ_code varchar(50) COMMENT 'erp片区code' +,organ_name varchar(100) COMMENT 'erp片区名称' +,comm_id varchar(50) COMMENT '项目id' +,comm_name varchar(100) COMMENT '项目名称' +,ym varchar(50) COMMENT '日期(yyyy-MM格式)' +,lc_fee_rate_target decimal(28,10) COMMENT '人力成本费率目标' +,ac_fee_rate_target decimal(28,10) COMMENT '行政成本费率目标' +,update_by varchar(50) COMMENT '数据更新人' +,update_time datetime COMMENT '数据更新时间' +,PRIMARY KEY (id) +) COMMENT='费控目标值填报'; + +${IF(pIsyear='月度',"", "/*")} +SELECT + organ_code -- erp片区code +,organ_name -- erp片区名称 +,comm_id -- 项目id +,comm_name -- 项目名称 +,ym -- 日期(yyyy-MM格式) +,lc_fee_rate_target -- 人力成本费率目标 +,ac_fee_rate_target -- 行政成本费率目标 +FROM ods_cost_collection_target +WHERE ym = '${p_ym}' + ${IF(pIsyear='月度',"", "*/")} + + ${IF(pIsyear='年度',"", "/*")} +SELECT + organ_code -- erp片区code + ,organ_name -- erp片区名称 + ,comm_id -- 项目id + ,comm_name -- 项目名称 + ,ym -- 日期(yyyy-MM格式) + ,lc_fee_rate_target -- 人力成本费率目标 + ,ac_fee_rate_target -- 行政成本费率目标 +FROM ods_cost_collection_target +WHERE length(ym) = 4 +AND left(ym,4) = left('${p_ym}',4) +${IF(pIsyear='年度',"", "*/")} +; + +SELECT * FROM ods_cost_collection_target; +TRUNCATE TABLE ods_cost_collection_target; + + +-- VALUE("dict_片区",1,2,B2) +-- VALUE("dict_片区_项目",3,4,C2) \ No newline at end of file From 23c49af1f2f0ecdff77a522967a044e7b00bd503 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Fri, 1 Nov 2024 20:54:28 +0800 Subject: [PATCH 80/89] =?UTF-8?q?=E6=98=8E=E7=BB=86=E8=A1=A8=E9=80=BB?= =?UTF-8?q?=E8=BE=91&=E7=9C=8B=E6=9D=BF=E5=8F=96=E6=95=B0=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E4=B8=BA=E5=A1=AB=E6=8A=A5=E8=A1=A8=E4=BD=9C=E4=B8=BA?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=9D=A5=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/sqldialects.xml | 8 +- finereport/kanban/pc/人力.sql | 1214 ++++++++++------- .../tianbao/5_manpower/1_月度合同到期提醒.sql | 49 + .../xiazuan/5_manpower/2_员工满编率明细.sql | 45 +- .../xiazuan/5_manpower/3_员工离职率明细.sql | 412 +++++- .../5_manpower/4_人力行政成本费率明细.sql | 234 ++++ .../xiazuan/5_manpower/5_在职人员明细.sql | 340 ++++- 7 files changed, 1715 insertions(+), 587 deletions(-) create mode 100644 finereport/tianbao/5_manpower/1_月度合同到期提醒.sql diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 5c3a239..5570155 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -42,11 +42,12 @@ + + + + - - - @@ -57,6 +58,7 @@ + diff --git a/finereport/kanban/pc/人力.sql b/finereport/kanban/pc/人力.sql index bb09d07..22461bb 100644 --- a/finereport/kanban/pc/人力.sql +++ b/finereport/kanban/pc/人力.sql @@ -75,7 +75,7 @@ FROM ,xm -- 项目 ,zzs -- 在职人数 FROM ods_hr_view_mbl_d -- 在职与编制人数 - WHERE left(rq,7) = '${p_ym}' + WHERE ny = '${p_ym}' )A LEFT JOIN ( @@ -122,7 +122,9 @@ FROM ,lzrs -- 离职人数 ,concat(nd,'-',yd) AS YM -- 年月 FROM ods_hr_view_lzrs_d -- 离职人数 - WHERE left(rq,7) = '${p_ym}' + WHERE left(rq,4) = left('${p_ym}',4) -- 取累计值 + AND left(rq,7) <= '${p_ym}' + AND pq not in('89','267') -- 排除了佳美、悦汇 )A LEFT JOIN ( @@ -157,38 +159,28 @@ where 1 = 1 -- ====================================== --- 指标卡_人力成本 +-- 指标卡_人力成本/行政成本 -- ====================================== SELECT -sum(total_fee) AS total_fee -from dw.dws_cost_lc_summary_d -- 人力成本实际值 -WHERE fee_type = '实际值' -AND concat(yearname,'-',monthname) = '${p_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}' ${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} --- ====================================== --- 指标卡_行政成本 --- ====================================== -SELECT -sum(total_fee) AS total_fee -FROM dw.dws_cost_ac_summary_d -- 费控行政成本实际值 -WHERE fee_type = '实际值' -AND concat(yearname,'-',monthname) = '${p_ym}' -${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} -- ====================================== -- 员工满编率柱状图 -- ====================================== SELECT - A.yd AS yd -- 月度 - ,A.pq AS pq -- 片区 - ,A.xm AS xm -- 项目 - ,A.zzs AS zzs -- 在职数 - ,A.bzs AS bzs -- 编制数 - ,CASE WHEN A.bzs = 0 THEN 0 - ELSE A.zzs / A.bzs END AS rate -- 满编率 + 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 @@ -198,8 +190,9 @@ FROM ,xm -- 项目 ,zzs -- 在职数 ,bzs -- 编制数 - FROM ods_hr_view_mbl_d - where nd = left('${p_ym}',4) + FROM ods_hr_view_mbl_d + where nd = left('${p_ym}',4) + AND pq not in('89','267') -- 排除了佳美、悦汇 )A LEFT JOIN ( @@ -231,39 +224,102 @@ 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 -- ====================================== -- 员工满编率排名 -- ====================================== --- 注意 目前会有空的排名 是因为佳美物业未做映射 +-- 片区排名 +${IF(LEN(p_area)=0,"", "/*")} SELECT T1.organ_comm AS organ_comm ,ROW_NUMBER() OVER(ORDER BY T1.RATE DESC) 排名 ,T1.rate - ,'0' AS target_rate + ,T1.full_rate_target AS target_rate FROM -( + ( SELECT - ${IF(LEN(p_area)>0,"B.hr_comm_name", "B.hr_organ_name")} AS organ_comm - ,CASE WHEN SUM(bzs) = 0 THEN 0 ELSE SUM(zzs) / SUM(bzs) END AS RATE + 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 FROM - ( + ( SELECT - pq -- 片区 - ,xm -- 项目 - ,zzs -- 在职数 - ,bzs -- 编制数 - ,rq -- 日期 + pq -- 片区 + ,SUM(zzs) AS zzs -- 在职数 + ,SUM(bzs) AS bzs -- 编制数 FROM ods_hr_view_mbl_d - WHERE rq = '${p_ym}' - -- 注意 目前会有一个空的排名 是因为佳美物业未做映射 - AND pq NOT IN ('89','267') -- 这里剔除了佳美物业公司/悦汇发展公司 + WHERE ny = '${p_ym}' + AND pq NOT IN ('89','267') -- 这里剔除了佳美物业公司/悦汇发展公司 + GROUP BY pq )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 + ( + 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 + pq -- 片区 + ,xm -- 项目 + ,SUM(zzs) AS zzs -- 在职数 + ,SUM(bzs) AS bzs -- 编制数 + FROM ods_hr_view_mbl_d + WHERE ny = '${p_ym}' + AND pq NOT IN ('89','267') -- 这里剔除了佳美物业公司/悦汇发展公司 + GROUP BY pq, xm + )A + LEFT JOIN + ( SELECT organ_code ,organ_name @@ -272,6 +328,7 @@ FROM ,hr_comm_id ,hr_comm_name FROM dim_organ_mapping + WHERE length(hr_comm_id) > 0 GROUP BY organ_code ,organ_name @@ -290,12 +347,25 @@ FROM )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 ${IF(LEN(p_area)>0,"B.hr_comm_name", "B.hr_organ_name")} + GROUP BY + B.hr_comm_name )T1 +${IF(LEN(p_area)>0,"", "*/")} + -- ====================================== -- 员工离职原因占比 @@ -360,29 +430,79 @@ SELECT T1.yr_month AS yr_month ,'人力成本' AS name ,'人力成本费率' AS name_rate - ,RIGHT(T1.yr_month,2) AS MONTHS - ,T1.actual_cost AS actual_cost -- 人力成本 + ,T1.lc_total_fee AS total_fee -- 人力成本 ,T1.index_income_fact AS index_income_fact -- 实际收入 - ,T1.actual_cost / T1.index_income_fact AS FEE_RATE -- 费率 + ,T1.lc_total_fee / T1.index_income_fact AS fee_rate -- 人力成本费率 FROM ( SELECT - A.yr_month AS yr_month - ,A.actual_cost + A.ym AS yr_month + ,A.lc_total_fee AS lc_total_fee ,b.index_income_fact AS index_income_fact FROM ( --- 费控人力成本科目汇总表 + -- 费控人力行政成本填报 SELECT - organ_code - ,CONCAT(yearname,'-',monthname) AS yr_month - ,SUM(CASE WHEN fee_type IN('实际值','目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 - from dw.dws_cost_ac_summary_d - WHERE yearname = left('${p_ym}',4) - AND CONCAT(yearname,'-',monthname) < '${p_ym}' - GROUP BY CONCAT(yearname,'-',monthname),organ_code + 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 )A LEFT JOIN + (-- 公司实际收入 + SELECT + yr_month + ,organ_code + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND LEFT(yr_month,4) = left('${p_ym}',4) + GROUP BY + yr_month + ,organ_code + )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,"','")+"')", "")} +)T1 +ORDER BY T1.yr_month + +${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 -- 人力成本 + ,T1.index_income_fact AS index_income_fact -- 实际收入 + ,T1.ac_total_fee / T1.index_income_fact AS fee_rate -- 人力成本费率 +FROM +( + SELECT + A.ym AS yr_month + ,A.ac_total_fee AS ac_total_fee -- 人力成本 + ,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 + ) A + LEFT JOIN (-- 公司实际收入 SELECT yr_month @@ -391,56 +511,11 @@ FROM FROM ods_caiwu_feecollection WHERE category = '物业' AND LEFT(yr_month,4) = left('${p_ym}',4) - GROUP BY yr_month,organ_code - )B - ON A.yr_month = 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,"','")+"')", "")} -)T1 -ORDER BY T1.yr_month -${if(p_type='人力',"","*/")} - -${if(p_type='行政',"","/*")} - -SELECT - T1.yr_month AS yr_month - ,'行政成本' AS name - ,'行政成本费率' AS name_rate - ,RIGHT(T1.yr_month,2) AS MONTHS - ,T1.actual_cost AS actual_cost -- 人力成本 - ,T1.index_income_fact AS index_income_fact -- 实际收入 - ,T1.actual_cost / T1.index_income_fact AS FEE_RATE -- 费率 -FROM -( - SELECT - A.yr_month AS yr_month - ,A.actual_cost AS actual_cost -- 人力成本 - ,B.index_income_fact AS index_income_fact -- 实际收入 - FROM - ( --- 费控人力成本科目汇总表 - SELECT - organ_code - ,CONCAT(yearname, '-', monthname) AS yr_month - ,SUM(CASE WHEN fee_type IN ('实际值', '目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 - FROM dw.dws_cost_lc_summary_d - WHERE yearname = LEFT('${p_ym}', 4) - AND CONCAT(yearname, '-', monthname) < '${p_ym}' - GROUP BY CONCAT(yearname, '-', monthname),organ_code - ) A - LEFT JOIN - (-- 公司实际收入 - SELECT - yr_month + GROUP BY + yr_month ,organ_code - , SUM(index_income_fact) AS index_income_fact -- 实际收入 - FROM ods_caiwu_feecollection - WHERE category = '物业' - AND LEFT(yr_month, 4) = LEFT('${p_ym}', 4) - GROUP BY yr_month,organ_code )B - ON A.yr_month = B.yr_month + ON A.ym = B.yr_month AND A.organ_code = B.organ_code WHERE 1=1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} @@ -456,217 +531,238 @@ ${if(p_type='行政',"","*/")} -- 这里无法筛选片区时展示对应片区下项目费率的排名 -- 原因: 费控成本均在各片区智能下,普通项目没有费用,可使用如下sql查询: -/* -SELECT - A.organ_comm_name AS organ_comm_name - ,A.actual_cost AS actual_cost -- 成本 - ,B.index_income_fact AS index_income_fact -- 实际收入 - ,ROW_NUMBER() OVER (ORDER BY A.actual_cost / B.index_income_fact DESC ) AS 排名 -- 费率排名 - ,A.actual_cost / B.index_income_fact AS fee_rate -- 费率 - ,A.budget_actual_cost / B.index_income_target AS target_fee_rate -- 费率目标 - FROM - ( --- 费控人力成本科目汇总表 - SELECT - A2.comm_name AS organ_comm_name - ,A2.comm_id AS organ_comm_code - ,A2.cost_comm_name AS cost_comm_name - ,SUM(CASE WHEN fee_type IN('实际值','目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 - ,SUM(CASE WHEN fee_type = '目标值' THEN total_fee ELSE 0 END) / 10000 AS budget_actual_cost -- 人力成本预算值 - - FROM - ( - SELECT - * - FROM dw.dws_cost_ac_summary_d - WHERE CONCAT(yearname,'-',monthname) = '2024-09' - )A1 - LEFT JOIN - ( - SELECT - organ_code -- erp片区编码 - ,organ_name -- erp片区名称 - ,comm_id - ,comm_name - ,cost_comm_id -- 费控项目id - ,cost_comm_name -- 费控项目名称 - FROM dim_organ_mapping_kunan_tmp - GROUP BY - organ_code -- erp片区编码 - ,organ_name -- erp片区名称 - ,comm_id - ,comm_name - ,cost_comm_id -- 费控项目id - ,cost_comm_name -- 费控项目名称 - )A2 - ON A1.organ_code = A2.organ_code - AND A1.dimsubjectcode = A2.cost_comm_id - WHERE 1=1 - -- AND A2.organ_code IN ('0102') - GROUP BY - A2.comm_name - ,A2.comm_id - ,A2.cost_comm_name - )A - LEFT JOIN - (-- 公司实际收入 - SELECT - comm_name AS organ_comm_name - ,comm_id AS organ_comm_code - ,SUM(index_income_fact) AS index_income_fact -- 实际收入 - ,SUM(index_income_target) AS index_income_target -- 收入目标 - FROM ods_caiwu_feecollection - WHERE category = '物业' - AND yr_month = '2024-09' - GROUP BY - comm_name - ,comm_id - )B - ON A.organ_comm_code = B.organ_comm_code - */ - - - -${if(p_type='人力',"","/*")} +-- 片区排名 +${if(and(len(p_area)=0,p_type='人力')," -- 片区排名开始", "/*")} SELECT A.organ_name AS organ_comm_name - ,A.actual_cost AS actual_cost -- 成本 + ,A.lc_total_fee AS actual_cost -- 人力成本 ,B.index_income_fact AS index_income_fact -- 实际收入 - ,ROW_NUMBER() OVER (ORDER BY A.actual_cost / B.index_income_fact DESC ) AS 排名 -- 费率排名 - ,A.actual_cost / B.index_income_fact AS fee_rate -- 费率 - ,A.budget_actual_cost / B.index_income_target AS target_fee_rate -- 费率目标 + ,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 - A1.organ_code - ,A1.organ_name - -- ${IF(LEN(p_area)>0,"dimsubjectname", "organ_name")} AS organ_comm_name - ,SUM(CASE WHEN fee_type IN('实际值','目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 - ,SUM(CASE WHEN fee_type = '目标值' THEN total_fee ELSE 0 END) / 10000 AS budget_actual_cost -- 人力成本预算值 - FROM - ( - SELECT - * - FROM dw.dws_cost_ac_summary_d -- 费控人力成本科目汇总表 - WHERE CONCAT(yearname,'-',monthname) = '${LEFT(MONTHDELTA(p_ym,-1),7)}' -- 取上月数据 - )A1 - LEFT JOIN - ( - SELECT - organ_code -- erp片区编码 - ,organ_name -- erp片区名称 - ,cost_comm_id - ,cost_comm_name - FROM dim_organ_mapping_kunan_tmp - GROUP BY organ_code - ,organ_name - ,cost_comm_id - ,cost_comm_name - )A2 - ON A1.organ_code = A2.organ_code - -- AND A1.dimsubjectcode = A2.cost_comm_id - WHERE 1=1 - -- ${IF(LEN(p_area)>0," AND A2.id IN ('"+JOINARRAY(p_area,"','")+"')", "")} - GROUP BY - A1.organ_code - ,A1.organ_name - -- ${IF(LEN(p_area)>0,"dimsubjectname", "organ_name")} + ,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 - -- ${IF(LEN(p_area)>0,"comm_name", "organ_name")} AS organ_comm_name 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 yr_month = '${LEFT(MONTHDELTA(p_ym,-1),7)}' + AND left(yr_month,4) = left('${p_ym}',4) + AND yr_month < '${p_ym}' GROUP BY - -- ${IF(LEN(p_area)>0,"comm_name", "organ_name")} 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 -${if(p_type='人力',"","*/")} - -${if(p_type='行政',"","/*")} +${if(and(len(p_area)=0,p_type='人力')," -- 片区排名开始", "*/")} +${if(and(len(p_area)=0,p_type='行政')," -- 片区排名开始", "/*")} SELECT A.organ_name AS organ_comm_name - ,A.actual_cost AS actual_cost -- 成本 + ,A.ac_total_fee AS actual_cost -- 成本 ,B.index_income_fact AS index_income_fact -- 实际收入 - ,ROW_NUMBER() OVER (ORDER BY A.actual_cost / B.index_income_fact DESC ) AS 排名 -- 费率排名 - ,A.actual_cost / B.index_income_fact AS fee_rate -- 费率 - ,A.budget_actual_cost / B.index_income_target AS target_fee_rate -- 费率目标 -FROM - ( --- 费控人力成本科目汇总表 + ,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 -- 费率目标 + FROM + ( -- 费控人力行政成本填报 SELECT - -- ${IF(LEN(p_area)>0,"A2.comm_name", "A1.organ_name")} AS organ_comm_name - -- ${IF(LEN(p_area)>0,",A2.comm_id", ",A1.organ_code")} AS organ_comm_code - A1.organ_code - ,A1.organ_name - ,SUM(CASE WHEN fee_type IN('实际值','目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 - ,SUM(CASE WHEN fee_type = '目标值' THEN total_fee ELSE 0 END) / 10000 AS budget_actual_cost -- 人力成本预算值 - - FROM - ( - SELECT - * - FROM dw.dws_cost_lc_summary_d - WHERE CONCAT(yearname,'-',monthname) = '${LEFT(MONTHDELTA(p_ym,-1),7)}' - )A1 - LEFT JOIN - ( - SELECT - organ_code -- erp片区编码 - ,organ_name -- erp片区名称 - ,comm_id - ,comm_name - ,cost_comm_id - ,cost_comm_name - FROM dim_organ_mapping_kunan_tmp - GROUP BY - organ_code - ,organ_name - ,comm_id - ,comm_name - ,cost_comm_id - ,cost_comm_name - )A2 - ON A1.organ_code = A2.organ_code - -- AND A1.dimsubjectcode = A2.cost_comm_id - WHERE 1=1 - -- ${IF(LEN(p_area)>0," AND A2.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} - GROUP BY - A1.organ_code - ,A1.organ_name - -- ${IF(LEN(p_area)>0,"A2.comm_name", "A1.organ_name")} - -- ${IF(LEN(p_area)>0,",A2.comm_id", ",A1.organ_code")} + 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 + LEFT JOIN (-- 公司实际收入 SELECT - -- ${IF(LEN(p_area)>0,"comm_id", "organ_code")} AS organ_comm_code - organ_code + 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 yr_month = '${LEFT(MONTHDELTA(p_ym,-1),7)}' + AND LEFT(yr_month,4) = left('${p_ym}',4) + AND yr_month <= '${p_ym}' GROUP BY - organ_code - -- ${IF(LEN(p_area)>0,"comm_id", "organ_code")} + 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 +${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.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 -- 费率目标 + 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 + )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}' + 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 + )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}' + 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(p_type='行政',"","*/")} @@ -674,46 +770,103 @@ FROM -- 离职率排名 -- ====================================== - +-- 片区 +${IF(LEN(p_area)=0,"", "/*")} SELECT T.hr_organ_name AS hr_organ_name ,T.lz_rate AS lz_rate - ,0 AS lz_rate_target + ,T.lz_rate_target AS lz_rate_target ,ROW_NUMBER() OVER(ORDER BY T.lz_rate desc) AS 排名 FROM ( SELECT - ${IF(LEN(p_area)>0,"B.hr_comm_name", "hr_organ_name")} AS hr_organ_name - ,CASE WHEN ((SUM(StartOfmonth_zzrs) + SUM(EndOfmonth_zsrs)) / 2) = 0 THEN 0 - ELSE SUM(zlzrs) / ((SUM(StartOfmonth_zzrs) + SUM(EndOfmonth_zsrs)) / 2) - END AS lz_rate - + 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 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 + ( + 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 - nd -- 年度 - ,jd -- 季度 - ,yd -- 月度 - ,rq -- 日期 - ,zb -- 总部 - ,pq -- 片区 - ,xm -- 项目 - ,zzrs -- 当天在职人数 - ,zdlzrs -- 当天主动离职人数 - ,bdlzrs -- 当天被动离职人数 - ,zlzrs -- 当天总离职人数 - ,CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END AS StartOfmonth_zzrs -- 月初在职人数 - ,CASE WHEN rq = LAST_DAY(CONCAT('${p_ym}','-01')) THEN zzrs ELSE 0 END AS EndOfmonth_zsrs -- 月末在职人数 - FROM ods_hr_view_lzbl_d - WHERE LEFT(rq,7) = '${p_ym}' - AND pq not in('89','267') - -- 排除了: - -- 89:佳美物业公司 - -- 153:领悦集团总部 - -- 267:悦汇发展公司 - )A - LEFT JOIN - ( + 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 + ( SELECT organ_code ,organ_name @@ -722,6 +875,7 @@ FROM ,hr_comm_id ,hr_comm_name FROM dim_organ_mapping + WHERE length(hr_comm_id) > 0 GROUP BY organ_code ,organ_name @@ -737,15 +891,26 @@ FROM ,'领悦集团总部' 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 + )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 where 1 = 1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} GROUP BY - ${IF(LEN(p_area)>0,"B.hr_comm_name", "hr_organ_name")} + B.hr_comm_name )T - +${IF(LEN(p_area)>0,"", "*/")} @@ -753,225 +918,304 @@ FROM -- 指标卡_人力成本费率/目标值 -- ====================================== + +-- 整体 +${IF(LEN(p_area)=0,"", "/*")} + SELECT - SUM(T1.actual_cost) AS actual_cost -- 人力成本 - ,SUM(T1.index_income_fact) AS index_income_fact -- 实际收入 - ,sum(T1.actual_cost) / sum(T1.index_income_fact) AS FEE_RATE -- 费率 - ,0 AS fee_rate_target +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.yr_month AS yr_month - ,A.actual_cost - ,b.index_income_fact AS index_income_fact +( +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 -- 行政成本费率 FROM ( - -- 费控人力成本科目汇总表 + -- 费控人力行政成本填报 SELECT - organ_code - ,CONCAT(yearname,'-',monthname) AS yr_month - ,SUM(CASE WHEN fee_type IN('实际值','目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 - from dw.dws_cost_ac_summary_d - WHERE CONCAT(yearname,'-',monthname) = '${LEFT(MONTHDELTA(p_ym,-1),7)}' - GROUP BY CONCAT(yearname,'-',monthname),organ_code + 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 )A LEFT JOIN (-- 公司实际收入 SELECT - yr_month - ,organ_code - ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + organ_code + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 FROM ods_caiwu_feecollection WHERE category = '物业' - AND yr_month = '${LEFT(MONTHDELTA(p_ym,-1),7)}' - GROUP BY yr_month,organ_code - )B - ON A.yr_month = 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,"','")+"')", "")} - )T1 - - - --- ====================================== --- 指标卡_行政成本费率/目标值 --- ====================================== - - - -SELECT - SUM(T1.actual_cost) AS actual_cost -- 行政成本 - ,SUM(T1.index_income_fact) AS index_income_fact -- 实际收入 - ,SUM(T1.actual_cost) / SUM(T1.index_income_fact) AS FEE_RATE -- 费率 - ,0 AS fee_rate_target -FROM -( - SELECT - A.yr_month AS yr_month - ,A.actual_cost AS actual_cost -- 人力成本 - ,B.index_income_fact AS index_income_fact -- 实际收入 - FROM - ( --- 费控行政成本科目汇总表 - SELECT + 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 - ,CONCAT(yearname, '-', monthname) AS yr_month - ,SUM(CASE WHEN fee_type IN ('实际值', '目标值') THEN total_fee ELSE 0 END) / 10000 AS actual_cost -- 人力成本 - FROM dw.dws_cost_lc_summary_d - WHERE CONCAT(yearname, '-', monthname) = '${LEFT(MONTHDELTA(p_ym,-1),7)}' - GROUP BY CONCAT(yearname, '-', monthname),organ_code - )A - LEFT JOIN - (-- 公司实际收入 - SELECT - yr_month - ,organ_code - ,SUM(index_income_fact) AS index_income_fact -- 实际收入 - FROM ods_caiwu_feecollection - WHERE category = '物业' - AND yr_month = '${LEFT(MONTHDELTA(p_ym,-1),7)}' - GROUP BY yr_month,organ_code - )B - ON A.yr_month = B.yr_month - AND A.organ_code = B.organ_code - WHERE 1=1 - ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ,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 + WHERE 1 = 1 + ${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +)T +${IF(LEN(p_area)>0,"", "*/")} - )T1 -- ====================================== -- 指标卡_在职人数满编率/目标值 -- ====================================== + +-- 整体 +${IF(LEN(p_area) = 0,"", "/*")} +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 -- 目标占比 +FROM +( SELECT CASE WHEN SUM(bzs) = 0 THEN 0 ELSE SUM(zzs) / SUM(bzs) END AS full_rate -- 满编率 ,0 AS full_rate_target -- 满编率目标值 FROM ( SELECT - pq -- 片区 - ,xm -- 项目 - ,zzs -- 在职数 + zzs -- 在职数 ,bzs -- 编制数 FROM ods_hr_view_mbl_d - WHERE rq = '${p_ym}' - -- 注意 目前会有一个空的排名 是因为佳美物业未做映射 - AND pq not in('89','267') -- 排除了佳美、悦汇 + WHERE ny = '${p_ym}' + AND pq not in('89','267') -- 排除了佳美、悦汇 )A -LEFT JOIN -( - SELECT - organ_code -- erp片区编码 - ,organ_name -- erp片区名称 - ,hr_organ_id -- hr片区编码 - ,hr_organ_name -- hr片区名称 - ,hr_comm_id -- hr项目id - ,hr_comm_name -- hr项目名称 - 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 -LEFT JOIN -( - SELECT - organ_code -- erp片区code - ,organ_name -- erp片区名称 - ,comm_id -- 项目id - ,comm_name -- 项目名称 - ,ym -- 日期(yyyy-MM格式) - ,full_rate_target -- 满编率目标 - ,lz_rate_target -- 离职率目标 - ,lc_fee_rate_target -- 人力成本费率目标 - ,ac_fee_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 +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 + pq -- 片区 + ,SUM(zzs) AS zzs -- 在职数 + ,SUM(bzs) AS bzs -- 编制数 + FROM ods_hr_view_mbl_d + WHERE yd = '${p_ym}' + AND pq not in('89','267') -- 排除了佳美、悦汇 + GROUP BY pq + )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,"", "*/")} + + + -- ====================================== -- 指标卡_离职人数离职率/目标值 -- ====================================== +-- 整体 +${IF(LEN(p_area) = 0,"", "/*")} SELECT -CASE WHEN ((SUM(StartOfmonth_zzrs) + SUM(EndOfmonth_zsrs)) / 2) = 0 THEN 0 - ELSE SUM(zlzrs) / ((SUM(StartOfmonth_zzrs) + SUM(EndOfmonth_zsrs)) / 2) - END AS lz_rate -,'0.002' AS lz_rate_target +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 -- 离职率目标 FROM ( SELECT - nd -- 年度 - ,jd -- 季度 - ,yd -- 月度 - ,rq -- 日期 - ,zb -- 总部 - ,pq -- 片区 - ,xm -- 项目 - ,zzrs -- 当天在职人数 - ,zdlzrs -- 当天主动离职人数 - ,bdlzrs -- 当天被动离职人数 + zzrs -- 当天在职人数 ,zlzrs -- 当天总离职人数 - ,CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END AS StartOfmonth_zzrs -- 月初在职人数 - ,CASE WHEN rq = LAST_DAY(CONCAT('${p_ym}','-01')) THEN zzrs ELSE 0 END AS EndOfmonth_zsrs -- 月末在职人数 FROM ods_hr_view_lzbl_d - WHERE LEFT(rq,7) = '${p_ym}' + WHERE LEFT(rq,4) = left('${p_ym}',4) + AND LEFT(rq,7) <= '${p_ym}' AND pq not in('89','267') -- 排除了佳美、悦汇 - -- 排除了: - -- 89:佳美物业公司 - -- 153:领悦集团总部 - -- 267:悦汇发展公司 )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 + pq -- 片区 + ,SUM(zzrs) AS zzrs-- 当天在职人数 + ,sum(zlzrs) AS zlzrs -- 当天总离职人数 + FROM ods_hr_view_lzbl_d + WHERE LEFT(rq,7) = '${p_ym}' + AND pq not in('89','267') -- 排除了佳美、悦汇 + -- 排除了: + -- 89:佳美物业公司 + -- 153:领悦集团总部 + -- 267:悦汇发展公司 + GROUP BY pq + )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片区编码 - ,organ_name -- erp片区名称 - ,hr_organ_id -- hr片区编码 - ,hr_organ_name -- hr片区名称 - ,hr_comm_id -- hr项目id - ,hr_comm_name -- hr项目名称 - 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 + ( + SELECT + organ_code + ,lz_rate_target + FROM ods_hr_collection_target_organ + 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,"", "*/")} \ No newline at end of file diff --git a/finereport/tianbao/5_manpower/1_月度合同到期提醒.sql b/finereport/tianbao/5_manpower/1_月度合同到期提醒.sql new file mode 100644 index 0000000..2d9d235 --- /dev/null +++ b/finereport/tianbao/5_manpower/1_月度合同到期提醒.sql @@ -0,0 +1,49 @@ +DROP TABLE ods_renli_contract_terminate; +CREATE TABLE ods_renli_contract_terminate ( +contract_code varchar(50) COMMENT '合同编号' +,organ_code varchar(50) COMMENT 'erp片区code' +,organ_name varchar(100) COMMENT 'erp片区名称' +,comm_id varchar(50) COMMENT '项目id' +,comm_name varchar(100) COMMENT '项目名称' +,contract_type varchar(100) COMMENT '合同类型' +,contract_name varchar(100) COMMENT '合同名称' +,contract_amount decimal(16,8) COMMENT '合同金额' +,party_a varchar(50) COMMENT '合作甲方' +,party_b varchar(50) COMMENT '合作乙方' +,start_date varchar(50) COMMENT '生效日期' +,end_date varchar(50) COMMENT '结束日期' +,update_by varchar(50) COMMENT '数据更新人' +,update_time datetime COMMENT '数据更新时间' +-- ,PRIMARY KEY (contract_code) +) COMMENT='月度合同到到期提醒填报'; + +SELECT +contract_code -- 合同编号 +,organ_code -- erp片区code +,organ_name -- erp片区名称 +,comm_id -- 项目id +,comm_name -- 项目名称 +,contract_type -- 合同类型 +,contract_name -- 合同名称 +,contract_amount -- 合同金额 +,party_a -- 合作甲方 +,party_b -- 合作乙方 +,start_date -- 生效日期 +,end_date -- 结束日期 +FROM ods_renli_contract_terminate +; + + +1、合同到期日-当期日期=90天提醒。显示到期合同总数量,并可下钻明细。 +2、合同到期日-当期日期=60天提醒,显示到期合同总数量,并可下钻明细。 +3、合同到期日-当期日期=30天提醒,显示到期合同总数量,并可下钻明细。 +4、合同到期日-当期日期=15天提醒,显示到期合同总数量,并可下钻明细。 +5、合同到期日-当期日期=7天提醒,显示到期合同总数量,并可下钻明细。" + + + + +-- VALUE("dict_片区_项目",3,4,D4) + +-- VALUE("dict_片区",1,2,B2) +-- VALUE("dict_片区_项目",3,4,C2) \ No newline at end of file diff --git a/finereport/xiazuan/5_manpower/2_员工满编率明细.sql b/finereport/xiazuan/5_manpower/2_员工满编率明细.sql index 0a962f5..5351e9e 100644 --- a/finereport/xiazuan/5_manpower/2_员工满编率明细.sql +++ b/finereport/xiazuan/5_manpower/2_员工满编率明细.sql @@ -1,31 +1,22 @@ SELECT -T1.hr_comm_name AS hr_comm_name -,T1.hr_organ_name AS hr_organ_name -,T1.bzs AS bzs -- 当月编制数 -,T1.zzs AS zzs -- 当月在职数 -,'0' AS target_full_rate -- 月均满编率目标 -,CASE when T1.bzs = 0 then 0 else T1.zzs / T1.bzs end AS full_rate -- 月度满编率 -,'0' AS target_rate -- 月均满编率目标 -,T1.rate AS rate -- 月均满编率实际 + B.hr_comm_name AS hr_comm_name -- 片区 + ,B.hr_organ_name AS hr_organ_name -- 项目 + ,SUM(A.bzs) AS bzs -- 编制数 + ,SUM(A.zzs) AS zzs -- 在职数 + ,SUM(C.full_rate_target) AS full_rate_target -- 满编率目标值 + ,SUM(C.avg_full_rate_target) AS avg_full_rate_target -- 月均满编率目标值 + ,CASE WHEN SUM(bzs) = 0 THEN 0 ELSE SUM(zzs) / SUM(bzs) END AS RATE -- 月均满编率 FROM ( - SELECT - B.hr_comm_name AS hr_comm_name - ,B.hr_organ_name AS hr_organ_name - ,SUM(A.bzs) AS bzs - ,SUM(A.zzs) AS zzs - ,CASE WHEN SUM(bzs) = 0 THEN 0 ELSE SUM(zzs) / SUM(bzs) END AS RATE - FROM - ( SELECT pq -- 片区 ,xm -- 项目 ,zzs -- 在职数 ,bzs -- 编制数 - ,rq FROM ods_hr_view_mbl_d - WHERE rq = '${p_ym}' + WHERE ny >= '${p_startym}' + AND ny <= '${p_ym}' -- 注意 目前会有一个空的排名 是因为佳美物业未做映射 AND pq NOT IN('89','267') )A @@ -39,7 +30,7 @@ FROM ,hr_comm_id -- hr项目id ,hr_comm_name -- hr项目名称 FROM dim_organ_mapping - WHERE hr_organ_name IS NOT NULL + WHERE length(hr_comm_id) > 0 GROUP BY organ_code ,organ_name @@ -47,7 +38,6 @@ FROM ,hr_organ_name ,hr_comm_id ,hr_comm_name - UNION ALL SELECT '0000' AS organ_code -- erp片区编码 @@ -60,9 +50,20 @@ FROM )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 -- 满编率目标 + ,avg_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 ('" + p_area +"')", "")} GROUP BY B.hr_comm_name - ,B.hr_organ_name -)T1 \ No newline at end of file + ,B.hr_organ_name \ No newline at end of file diff --git a/finereport/xiazuan/5_manpower/3_员工离职率明细.sql b/finereport/xiazuan/5_manpower/3_员工离职率明细.sql index af22985..23281d3 100644 --- a/finereport/xiazuan/5_manpower/3_员工离职率明细.sql +++ b/finereport/xiazuan/5_manpower/3_员工离职率明细.sql @@ -1,38 +1,164 @@ SELECT ${IF(LEN(p_area)>0,"B.hr_comm_name", "hr_organ_name")} AS hr_organ_name -,CASE WHEN ((SUM(StartOfmonth_zzrs) + SUM(EndOfmonth_zsrs)) / 2) = 0 THEN 0 - ELSE SUM(zlzrs) / ((SUM(StartOfmonth_zzrs) + SUM(EndOfmonth_zsrs)) / 2) - END AS lz_rate -,SUM(StartOfmonth_zzrs) AS StartOfmonth_zzrs -- 月初在职人数 -,SUM(EndOfmonth_zsrs) AS EndOfmonth_zsrs -- 月末在职人数 -,sum(zdlzrs) AS zdlzrs -- 主动离职人数 -,sum(bdlzrs) AS bdlzrs -- 当天被动离职人数 -,SUM(zlzrs) AS zlzrs -- 总离职人数 +,SUM(A.StartOfmonth_zzrs) AS StartOfmonth_zzrs -- 月初在职人数 +,SUM(A.EndOfmonth_zsrs) AS EndOfmonth_zsrs -- 月末在职人数 +,sum(A.zdlzrs) AS zdlzrs -- 主动离职人数 +,CASE WHEN SUM(A.zzrs) = 0 THEN 0 ELSE sum(A.zdlzrs) / SUM(A.zzrs) END AS zdlz_rate +,sum(A.bdlzrs) AS bdlzrs -- 当天被动离职人数 +,CASE WHEN SUM(A.zzrs) = 0 THEN 0 ELSE sum(A.bdlzrs) / SUM(A.zzrs) END AS bdlz_rate +,SUM(A.zlzrs) AS zlzrs -- 总离职人数 +,CASE WHEN SUM(A.zzrs) = 0 THEN 0 ELSE sum(A.zlzrs) / SUM(A.zzrs) END AS lz_rate FROM ( - SELECT - nd -- 年度 - ,jd -- 季度 - ,yd -- 月度 - ,rq -- 日期 - ,zb -- 总部 - ,pq -- 片区 - ,xm -- 项目 - ,zzrs -- 当天在职人数 - ,zdlzrs -- 当天主动离职人数 - ,bdlzrs -- 当天被动离职人数 - ,zlzrs -- 当天总离职人数 - ,CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END AS StartOfmonth_zzrs -- 月初在职人数 - ,CASE WHEN rq = LAST_DAY(CONCAT('${p_ym}','-01')) THEN zzrs ELSE 0 END AS EndOfmonth_zsrs -- 月末在职人数 + SELECT + pq, xm, ym, StartOfmonth_zzrs, EndOfmonth_zsrs, zdlzrs, bdlzrs, zlzrs +,(StartOfmonth_zzrs + EndOfmonth_zsrs) / 2 AS zzrs + FROM + ( + SELECT + pq -- 片区 + ,xm -- 项目 + ,LEFT(rq,7) AS ym + ,SUM(CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END) AS StartOfmonth_zzrs -- 月初在职人数 + ,SUM(CASE WHEN rq = LAST_DAY(CONCAT('${p_ym}','-01')) THEN zzrs ELSE 0 END) AS EndOfmonth_zsrs -- 月末在职人数 + ,SUM(zdlzrs) AS zdlzrs -- 当天主动离职人数 + ,SUM(bdlzrs) AS bdlzrs -- 当天被动离职人数 + ,SUM(zlzrs) AS zlzrs -- 当天总离职人数 FROM ods_hr_view_lzbl_d - WHERE LEFT(rq,7) = '${p_ym}' - AND pq not in('89','267') -- 排除了: -- 89:佳美物业公司 - -- 153:领悦集团总部 -- 267:悦汇发展公司 + GROUP BY pq, xm, rq + UNION ALL + + SELECT + T1.organ_code AS pq + ,T1.comm_id AS xm + ,T1.ym AS ym + ,SUM(T1.begin_num ) AS StartOfmonth_zzrs-- 月初在职 + ,SUM(T1.end_num ) AS EndOfmonth_zsrs-- 月末在职 + ,SUM(T1.active_quit) AS zdlzrs-- 主动离职人数 + ,SUM(T1.pass_quit ) AS bdlzrs-- 被动离职人数 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(feb_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(mar_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(apr_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(may_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jun_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jul_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(aug_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(sep_end_num,0) AS end_num -- 月末在职 + ,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 + )T + WHERE ym >= '${p_startym}' + AND ym <= '${p_ym}' + AND pq not in('89','267') + AND (pq is NOT NULL OR xm IS NOT NULL ) + )A -LEFT JOIN +RIGHT JOIN ( SELECT organ_code -- erp片区编码 @@ -42,6 +168,7 @@ LEFT JOIN ,hr_comm_id -- hr项目id ,hr_comm_name -- hr项目名称 FROM dim_organ_mapping + WHERE length(hr_comm_id) > 0 GROUP BY organ_code ,organ_name @@ -65,56 +192,193 @@ where 1 = 1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('" + p_area +"')", "")} GROUP BY ${IF(LEN(p_area)>0,"B.hr_comm_name", "hr_organ_name")} +ORDER BY ${IF(LEN(p_area)>0,"B.hr_comm_name", "hr_organ_name")} --- 离职原因占比 + + +-- ====================================== +-- 天问提供历史数据处理 +-- ====================================== + + +DROP TABLE ods_hr_history_erp_date; + +CREATE TABLE ods_hr_history_erp_date ( + organ_name varchar(100) COMMENT 'erp片区名称' +,organ_code varchar(100) COMMENT 'erp片区编码' +,comm_name varchar(100) COMMENT '项目名称' +,comm_id varchar(100) COMMENT '项目id' +,sep_end_num int COMMENT '9月末在职人数' +,sep_pass_quit int COMMENT '9月被动离职人数' +,sep_active_quit int COMMENT '9月主动离职人数' +,sep_begin_num int COMMENT '9月初在职' + +,aug_end_num int COMMENT '8月末在职人数' +,aug_pass_quit int COMMENT '8月被动离职人数' +,aug_active_quit int COMMENT '8月主动离职人数' +,aug_begin_num int COMMENT '8月初在职' + +,jul_end_num int COMMENT '7月末在职人数' +,jul_pass_quit int COMMENT '7月被动离职人数' +,jul_active_quit int COMMENT '7月主动离职人数' +,jul_begin_num int COMMENT '7月初在职' + +,jun_end_num int COMMENT '6月末在职人数' +,jun_pass_quit int COMMENT '6月被动离职人数' +,jun_active_quit int COMMENT '6月主动离职人数' +,jun_begin_num int COMMENT '6月初在职' + +,may_end_num int COMMENT '5月末在职人数' +,may_pass_quit int COMMENT '5月被动离职人数' +,may_active_quit int COMMENT '5月主动离职人数' +,may_begin_num int COMMENT '5月初在职' + +,apr_end_num int COMMENT '4月末在职人数' +,apr_pass_quit int COMMENT '4月被动离职人数' +,apr_active_quit int COMMENT '4月主动离职人数' +,apr_begin_num int COMMENT '4月初在职' + +,mar_end_num int COMMENT '3月末在职人数' +,mar_pass_quit int COMMENT '3月被动离职人数' +,mar_active_quit int COMMENT '3月主动离职人数' +,mar_begin_num int COMMENT '3月初在职' + +,feb_end_num int COMMENT '2月末在职人数' +,feb_pass_quit int COMMENT '2月被动离职人数' +,feb_active_quit int COMMENT '2月主动离职人数' +,feb_begin_num int COMMENT '2月初在职' + +,jan_end_num int COMMENT '1月末在职人数' +,jan_pass_quit int COMMENT '1月被动离职人数' +,jan_active_quit int COMMENT '1月主动离职人数' +,jan_begin_num int COMMENT '1月初在职' +) COMMENT='erp系统历史离职人数'; + + +SELECT * FROM ods_hr_history_erp_date + + +-- 列转行处理 SELECT - A.lzlx AS lzlx -- 离职类型id - ,A.lzlxname AS lzlxname -- 离职类型名称 - ,A.lzyy AS lzyy -- 离职原因id - ,A.lzyyname AS lzyyname -- 离职原因名称 - ,A.lzrs AS lzrs -- 离职人数 + T1.organ_code AS organ_code +,T1.organ_name AS organ_name +,T1.comm_id AS comm_id +,T1.comm_name AS comm_name +,T1.ym AS ym +,SUM(T1.begin_num ) AS begin_num-- 月初在职 +,SUM(T1.end_num ) AS end_num-- 月末在职 +,SUM(T1.active_quit) AS active_quit-- 主动离职人数 +,SUM(T1.pass_quit ) AS pass_quit-- 被动离职人数 FROM - ( - SELECT - pq -- 片区 - ,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 -- erp片区编码 - ,organ_name -- erp片区名称 - ,hr_organ_id -- hr片区编码 - ,hr_organ_name -- hr片区名称 - ,hr_comm_id -- hr项目id - ,hr_comm_name -- hr项目名称 - 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,"','")+"')", "")} +( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,'2024-01' AS ym + ,COALESCE(jan_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(feb_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(mar_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(apr_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(may_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jun_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jul_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(aug_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(sep_end_num,0) AS end_num -- 月末在职 + ,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.organ_name, T1.comm_id, T1.comm_name,T1.ym diff --git a/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql b/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql index 5164b0c..03dfb89 100644 --- a/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql +++ b/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql @@ -140,3 +140,237 @@ FROM ${if(p_type='行政',"","*/")} + + +-- ====================================== +-- 使用填报数据来源 +-- ====================================== + + +${if(p_type='人力',"","/*")} + + + SELECT + A.organ_name AS organ_name -- 片区 + ,A.comm_name AS comm_name -- 项目 + ,SUM(D.lc_fee_rate_target) AS lc_fee_rate_target -- 人力费率年度目标值 + ,SUM(B.index_market_target) AS index_market_target-- 收入累计目标值 + ,SUM(A.lc_target_fee) AS lc_target_fee -- 人力成本累计目标值 + ,SUM(C.lc_fee_rate_target) AS lc_fee_rate_target -- 人力成本费率目标值 + ,SUM(B.index_income_fact) AS index_income_fact -- 实际收入累计值 + ,SUM(A.lc_total_fee) AS lc_total_fee -- 人力成本累计实际 + ,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 -- 费率实际值 + + FROM + ( -- 费控人力行政成本填报 + SELECT + organ_code -- 片区id + ,organ_name -- 片区名称 + ,comm_id -- 项目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 budget_amount ELSE 0 END),0) AS lc_target_fee -- 人力成本预算费用 + ,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END),0) AS ac_total_fee -- 行政成本费用 + ,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN budget_amount ELSE 0 END),0) AS ac_target_fee -- 行政成本预算费用 + from dw.ods_cost_collection_lc_ac + WHERE ym >= '${p_startym}' + AND ym <= '${p_ym}' + GROUP BY organ_code, organ_name, comm_id, comm_name + )A + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_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 + ,comm_id + ,comm_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片区名称 + ,'' AS comm_id + ,'' AS comm_name + ,'153' AS hr_organ_id -- hr片区编码 + ,'领悦集团总部' AS hr_organ_name -- hr片区名称 + ,'153' AS hr_comm_id -- hr项目id + ,'领悦集团总部' AS hr_comm_name -- hr项目名称 + )A1 + ON A.organ_code = A1.organ_code + and A.comm_id = A1.hr_comm_id + LEFT JOIN + (-- 公司实际收入 + SELECT + organ_code + ,comm_id + ,SUM(index_market_target) AS index_market_target -- 收入目标值 + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month >= '${p_startym}' + AND yr_month <= '${p_ym}' + GROUP BY + organ_code,comm_id + )B + ON A1.organ_code = B.organ_code + AND A1.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 + LEFT JOIN + (-- 费控年度目标值 + SELECT + organ_code + ,comm_id + ,lc_fee_rate_target -- 人力成本费率目标 + ,ac_fee_rate_target -- 行政成本费率目标 + FROM ods_cost_collection_target + WHERE left(ym,4) = left('${p_ym}',4) + AND length(ym) = 4 + )D + ON A.organ_code = D.organ_code + AND A.comm_id = D.comm_id + WHERE 1 = 1 + ${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + GROUP BY A.organ_name + ,A.comm_name + +${if(p_type='人力',"","*/")} + + +${if(p_type='行政',"","/*")} + + +SELECT + A.organ_name AS organ_name -- 片区 + ,A.comm_name AS comm_name -- 项目 + ,SUM(D.ac_fee_rate_target) AS lc_fee_rate_target -- 人力费率年度目标值 + ,SUM(B.index_market_target) AS index_market_target-- 收入累计目标值 + ,SUM(A.ac_target_fee) AS lc_target_fee -- 人力成本累计目标值 + ,SUM(C.ac_fee_rate_target) AS lc_fee_rate_target -- 人力成本费率目标值 + ,SUM(B.index_income_fact) AS index_income_fact -- 实际收入累计值 + ,SUM(A.ac_total_fee) AS lc_total_fee -- 人力成本累计实际 + ,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 -- 费率实际值 + +FROM + ( -- 费控人力行政成本填报 + SELECT + organ_code -- 片区id + ,organ_name -- 片区名称 + ,comm_id -- 项目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 budget_amount ELSE 0 END),0) AS lc_target_fee -- 人力成本预算费用 + ,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END),0) AS ac_total_fee -- 行政成本费用 + ,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN budget_amount ELSE 0 END),0) AS ac_target_fee -- 行政成本预算费用 + from dw.ods_cost_collection_lc_ac + WHERE ym >= '${p_startym}' + AND ym <= '${p_ym}' + GROUP BY organ_code, organ_name, comm_id, comm_name + )A + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_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 + ,comm_id + ,comm_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片区名称 + ,'' AS comm_id + ,'' AS comm_name + ,'153' AS hr_organ_id -- hr片区编码 + ,'领悦集团总部' AS hr_organ_name -- hr片区名称 + ,'153' AS hr_comm_id -- hr项目id + ,'领悦集团总部' AS hr_comm_name -- hr项目名称 + )A1 + ON A.organ_code = A1.organ_code + and A.comm_id = A1.hr_comm_id + LEFT JOIN + (-- 公司实际收入 + SELECT + organ_code + ,comm_id + ,SUM(index_market_target) AS index_market_target -- 收入目标值 + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month >= '${p_startym}' + AND yr_month <= '${p_ym}' + GROUP BY + organ_code,comm_id + )B + ON A1.organ_code = B.organ_code + AND A1.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 + LEFT JOIN + (-- 费控年度目标值 + SELECT + organ_code + ,comm_id + ,lc_fee_rate_target -- 人力成本费率目标 + ,ac_fee_rate_target -- 行政成本费率目标 + FROM ods_cost_collection_target + WHERE left(ym,4) = left('${p_ym}',4) + AND length(ym) = 4 + )D + ON A.organ_code = D.organ_code + AND A.comm_id = D.comm_id +WHERE 1 = 1 + ${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +GROUP BY A.organ_name + ,A.comm_name + ${if(p_type='行政',"","*/")} diff --git a/finereport/xiazuan/5_manpower/5_在职人员明细.sql b/finereport/xiazuan/5_manpower/5_在职人员明细.sql index 39da933..121eff8 100644 --- a/finereport/xiazuan/5_manpower/5_在职人员明细.sql +++ b/finereport/xiazuan/5_manpower/5_在职人员明细.sql @@ -42,6 +42,70 @@ GROUP BY nld + +-- 年龄分布 +-- 年龄<30岁;30岁≤年龄<40岁;40岁≤年龄<50岁;50岁≤年龄<60岁;60岁≤年龄<65岁;年龄≥65岁; +SELECT + CASE WHEN A.nl < 30.00 THEN '年龄<30岁' + WHEN A.nl >= 30.00 AND A.nl < 40.00 THEN '30岁≤年龄<40岁' + WHEN A.nl >= 40.00 AND A.nl < 50.00 THEN '40岁≤年龄<50岁' + WHEN A.nl >= 50.00 AND A.nl < 60.00 THEN '50岁≤年龄<60岁' + WHEN A.nl >= 60.00 AND A.nl < 65.00 THEN '60岁≤年龄<65岁' + WHEN A.nl >= 65.00 THEN '年龄≥65岁' + END AS nld + ,count(1) AS sl +FROM + ( + SELECT + pq + ,xm + ,nl + FROM ods_hr_view_zaizhi_user_d + WHERE ny <= '${p_ym}' + AND ny >= '${p_startym}' + )A + LEFT JOIN + ( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,hr_organ_id -- hr片区编码 + ,hr_organ_name -- hr片区名称 + ,hr_comm_id -- hr项目id + ,hr_comm_name -- hr项目名称 + 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项目名称 + FROM dual + )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 ('"+ p_area +"')", "")} +GROUP BY + CASE WHEN nl < 30.00 THEN '年龄<30岁' + WHEN nl >= 30.00 AND nl < 40.00 THEN '30岁≤年龄<40岁' + WHEN nl >= 40.00 AND nl < 50.00 THEN '40岁≤年龄<50岁' + WHEN nl >= 50.00 AND nl < 60.00 THEN '50岁≤年龄<60岁' + WHEN nl >= 60.00 AND nl < 65.00 THEN '60岁≤年龄<65岁' + WHEN nl >= 65.00 THEN '年龄≥65岁' + END + + -- ====================================== -- 司龄分布 -- ====================================== @@ -84,9 +148,69 @@ where 1 = 1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} GROUP BY sld +-- 司龄<3个月内;3个月≤司龄<1年;1年≤司龄<3年;3年≤司龄<5年;5年≤司龄<10年;10年≤司龄<15年;司龄≥15年; - - +SELECT + CASE WHEN A.sl < 0.30 THEN '司龄<3个月内' + WHEN A.sl >= 0.30 AND A.sl < 1.00 THEN '3个月≤司龄<1年' + WHEN A.sl >= 1.00 AND A.sl < 3.00 THEN '1年≤司龄<3年' + WHEN A.sl >= 3.00 AND A.sl < 5.00 THEN '3年≤司龄<5年' + WHEN A.sl >= 5.00 AND A.sl < 10.00 THEN '5年≤司龄<10年' + WHEN A.sl >= 10.00 AND A.sl < 15.00 THEN '10年≤司龄<15年' + WHEN A.sl >= 15.00 THEN '司龄≥15年' + END AS sld + ,count(1) AS sl +FROM + ( + SELECT + pq + ,xm + ,sl + FROM ods_hr_view_zaizhi_user_d + WHERE ny <= '${p_ym}' + AND ny >= '${p_startym}' + )A + LEFT JOIN + ( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,hr_organ_id -- hr片区编码 + ,hr_organ_name -- hr片区名称 + ,hr_comm_id -- hr项目id + ,hr_comm_name -- hr项目名称 + 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项目名称 + FROM dual + )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 ('"+ p_area +"')", "")} +GROUP BY + CASE WHEN A.sl < 0.30 THEN '司龄<3个月内' + WHEN A.sl >= 0.30 AND A.sl < 1.00 THEN '3个月≤司龄<1年' + WHEN A.sl >= 1.00 AND A.sl < 3.00 THEN '1年≤司龄<3年' + WHEN A.sl >= 3.00 AND A.sl < 5.00 THEN '3年≤司龄<5年' + WHEN A.sl >= 5.00 AND A.sl < 10.00 THEN '5年≤司龄<10年' + WHEN A.sl >= 10.00 AND A.sl < 15.00 THEN '10年≤司龄<15年' + WHEN A.sl >= 15.00 THEN '司龄≥15年' + END -- ====================================== -- 学历分布 @@ -132,6 +256,54 @@ where 1 = 1 GROUP BY xl +SELECT + A.xlmc + ,count(1) AS sl +FROM + ( + SELECT + pq + ,xm + ,xlmc + FROM ods_hr_view_zaizhi_user_d + WHERE ny <= '${p_ym}' + AND ny >= '${p_startym}' + )A + LEFT JOIN + ( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,hr_organ_id -- hr片区编码 + ,hr_organ_name -- hr片区名称 + ,hr_comm_id -- hr项目id + ,hr_comm_name -- hr项目名称 + 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项目名称 + FROM dual + )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 ('"+ p_area +"')", "")} +GROUP BY + A.xlmc + -- ====================================== -- 职务角色 @@ -176,7 +348,63 @@ where 1 = 1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} GROUP BY zwje +-- 总部职能中心/一级部门负责人及以上人员 +-- 总部二级职能部门负责人 +-- 片区负责人 +-- 片区职能部门负责人 +-- 项目负责人 +-- 项目部门负责人 +-- 案场负责人 +-- 案场部门负责人 +-- 员工 +SELECT + zwmc AS zwje + ,count(1) AS sl +FROM + ( + SELECT + pq + ,xm + ,zwmc + FROM ods_hr_view_zaizhi_user_d + WHERE ny <= '${p_ym}' + AND ny >= '${p_startym}' + )A + LEFT JOIN + ( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,hr_organ_id -- hr片区编码 + ,hr_organ_name -- hr片区名称 + ,hr_comm_id -- hr项目id + ,hr_comm_name -- hr项目名称 + 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项目名称 + FROM dual + )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 ('"+ p_area +"')", "")} +GROUP BY + A.zwmc @@ -226,6 +454,53 @@ GROUP BY swtx +SELECT + A.zycjname + ,count(1) AS sl +FROM + ( + SELECT + pq + ,xm + ,zycjname + FROM ods_hr_view_zaizhi_user_d + WHERE ny <= '${p_ym}' + AND ny >= '${p_startym}' + )A + LEFT JOIN + ( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,hr_organ_id -- hr片区编码 + ,hr_organ_name -- hr片区名称 + ,hr_comm_id -- hr项目id + ,hr_comm_name -- hr项目名称 + 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项目名称 + FROM dual + )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 ('"+ p_area +"')", "")} +GROUP BY + A.zycjname -- ====================================== -- 一级专业条线 @@ -271,6 +546,60 @@ where 1 = 1 GROUP BY zytx ; + + + + + +SELECT + A.zytxmc + ,count(1) AS sl +FROM + ( + SELECT + pq + ,xm + ,zytxmc + FROM ods_hr_view_zaizhi_user_d + WHERE ny <= '${p_ym}' + AND ny >= '${p_startym}' + )A + LEFT JOIN + ( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,hr_organ_id -- hr片区编码 + ,hr_organ_name -- hr片区名称 + ,hr_comm_id -- hr项目id + ,hr_comm_name -- hr项目名称 + 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项目名称 + FROM dual + )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 ('"+ p_area +"')", "")} +GROUP BY + A.zytxmc + + -- ====================================== -- 人员明细 -- ====================================== @@ -349,4 +678,9 @@ LEFT JOIN 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 ('"+ p_area +"')", "")} \ No newline at end of file +${IF(LEN(p_area)>0," AND B.organ_code IN ('"+ p_area +"')", "")} + + +-- ====================================== +-- 使用ods_hr_view_zaizhi_user_d表计算人员分布占比 +-- ====================================== From 5ad044ab1507c71675ee2db2515dd5861ae3ea2b Mon Sep 17 00:00:00 2001 From: yangkunan Date: Fri, 1 Nov 2024 22:09:22 +0800 Subject: [PATCH 81/89] =?UTF-8?q?=E5=90=88=E5=90=8C=E5=88=B0=E6=9C=9F?= =?UTF-8?q?=E6=98=8E=E7=BB=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tianbao/5_manpower/1_月度合同到期提醒.sql | 30 +++++++++++++------ 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/finereport/tianbao/5_manpower/1_月度合同到期提醒.sql b/finereport/tianbao/5_manpower/1_月度合同到期提醒.sql index 2d9d235..4de5ee5 100644 --- a/finereport/tianbao/5_manpower/1_月度合同到期提醒.sql +++ b/finereport/tianbao/5_manpower/1_月度合同到期提醒.sql @@ -17,6 +17,8 @@ contract_code varchar(50) COMMENT '合同编号' -- ,PRIMARY KEY (contract_code) ) COMMENT='月度合同到到期提醒填报'; + +SELECT * FROM ods_renli_contract_terminate SELECT contract_code -- 合同编号 ,organ_code -- erp片区code @@ -30,19 +32,29 @@ contract_code -- 合同编号 ,party_b -- 合作乙方 ,start_date -- 生效日期 ,end_date -- 结束日期 +,datediff(end_date,current_date) AS expire_day -- 距离到期天数 FROM ods_renli_contract_terminate +WHERE 1 = 1 +${IF(LEN(p_area)>0," AND organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +${IF(LEN(p_c_type)>0," AND contract_type IN ('"+JOINARRAY(p_c_type,"','")+"')", "")} +${IF(LEN(p_dt_type)>0, +switch(p_dt_type +,'7天提醒',"AND datediff(end_date,current_date) > 0 AND datediff(end_date,current_date) <= 7" +,'15天提醒',"AND datediff(end_date,current_date) > 0 AND datediff(end_date,current_date) <= 15" +,'30天提醒',"AND datediff(end_date,current_date) > 0 AND datediff(end_date,current_date) <= 30" +,'60天提醒',"AND datediff(end_date,current_date) > 0 AND datediff(end_date,current_date) <= 60" +,'90天提醒',"AND datediff(end_date,current_date) > 0 AND datediff(end_date,current_date) <= 90" +), "")} + + ; -1、合同到期日-当期日期=90天提醒。显示到期合同总数量,并可下钻明细。 -2、合同到期日-当期日期=60天提醒,显示到期合同总数量,并可下钻明细。 -3、合同到期日-当期日期=30天提醒,显示到期合同总数量,并可下钻明细。 -4、合同到期日-当期日期=15天提醒,显示到期合同总数量,并可下钻明细。 -5、合同到期日-当期日期=7天提醒,显示到期合同总数量,并可下钻明细。" - - - - +-- 1、合同到期日-当期日期=90天提醒。显示到期合同总数量,并可下钻明细。 +-- 2、合同到期日-当期日期=60天提醒,显示到期合同总数量,并可下钻明细。 +-- 3、合同到期日-当期日期=30天提醒,显示到期合同总数量,并可下钻明细。 +-- 4、合同到期日-当期日期=15天提醒,显示到期合同总数量,并可下钻明细。 +-- 5、合同到期日-当期日期=7天提醒,显示到期合同总数量,并可下钻明细。" -- VALUE("dict_片区_项目",3,4,D4) -- VALUE("dict_片区",1,2,B2) From dc011cde902cb53d756b398542e01ddafecc892a Mon Sep 17 00:00:00 2001 From: yangkunan Date: Mon, 4 Nov 2024 23:26:25 +0800 Subject: [PATCH 82/89] =?UTF-8?q?=E5=9C=A8=E8=81=8C=E4=BA=BA=E6=95=B0?= =?UTF-8?q?=E3=80=81=E6=BB=A1=E7=BC=96=E7=8E=87=E3=80=81=E7=A6=BB=E8=81=8C?= =?UTF-8?q?=E7=8E=87=E7=9B=B8=E5=85=B3=E5=9B=BE=E8=A1=A8=E3=80=81=E6=8C=87?= =?UTF-8?q?=E6=A0=87=E5=8D=A1=E3=80=81=E6=8E=92=E5=90=8D=E4=BD=BF=E7=94=A8?= =?UTF-8?q?ERP=E6=8F=90=E4=BE=9B=E7=9A=84=E5=8E=86=E5=8F=B2=E6=95=B0?= =?UTF-8?q?=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- finereport/kanban/pc/人力.sql | 1077 ++++++++++++++++++++++++++++++--- 1 file changed, 1006 insertions(+), 71 deletions(-) diff --git a/finereport/kanban/pc/人力.sql b/finereport/kanban/pc/人力.sql index 22461bb..402d4e0 100644 --- a/finereport/kanban/pc/人力.sql +++ b/finereport/kanban/pc/人力.sql @@ -69,13 +69,115 @@ FROM third_department SELECT SUM(zzs) AS SL FROM +( + SELECT + A1.pq + ,A1.xm + ,SUM(A1.zzs) as zzs + FROM ( - SELECT - pq -- 片区 - ,xm -- 项目 - ,zzs -- 在职人数 - FROM ods_hr_view_mbl_d -- 在职与编制人数 - WHERE ny = '${p_ym}' + 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 )A LEFT JOIN ( @@ -107,7 +209,6 @@ FROM and A.xm = b.hr_comm_id where 1 = 1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} - -- ====================================== -- 指标卡_离职人数 -- ====================================== @@ -115,16 +216,125 @@ ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} SELECT SUM(lzrs) AS SL FROM +( + SELECT + A1.pq AS pq + ,A1.xm AS xm + ,SUM(A1.lzrs) AS lzrs + FROM ( - SELECT - pq -- 片区 - ,xm -- 项目 - ,lzrs -- 离职人数 - ,concat(nd,'-',yd) AS YM -- 年月 + SELECT pq -- 片区 + , xm -- 项目 + , CONCAT(nd, '-', yd) AS ym -- 年月 + , lzrs -- 离职人数 FROM ods_hr_view_lzrs_d -- 离职人数 - WHERE left(rq,4) = left('${p_ym}',4) -- 取累计值 - AND left(rq,7) <= '${p_ym}' + 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 )A LEFT JOIN ( @@ -184,15 +394,120 @@ SELECT 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) - yd -- 月度 - ,pq -- 片区 - ,xm -- 项目 - ,zzs -- 在职数 - ,bzs -- 编制数 - FROM ods_hr_view_mbl_d - where nd = left('${p_ym}',4) - AND pq not in('89','267') -- 排除了佳美、悦汇 )A LEFT JOIN ( @@ -246,15 +561,114 @@ FROM ,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 - pq -- 片区 - ,SUM(zzs) AS zzs -- 在职数 - ,SUM(bzs) AS bzs -- 编制数 - FROM ods_hr_view_mbl_d - WHERE ny = '${p_ym}' - AND pq NOT IN ('89','267') -- 这里剔除了佳美物业公司/悦汇发展公司 - GROUP BY pq + 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 ( @@ -309,14 +723,114 @@ FROM FROM ( SELECT - pq -- 片区 - ,xm -- 项目 - ,SUM(zzs) AS zzs -- 在职数 - ,SUM(bzs) AS bzs -- 编制数 - FROM ods_hr_view_mbl_d - WHERE ny = '${p_ym}' - AND pq NOT IN ('89','267') -- 这里剔除了佳美物业公司/悦汇发展公司 - GROUP BY pq, xm + 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 ( @@ -1039,11 +1553,108 @@ CASE WHEN SUM(bzs) = 0 THEN 0 ELSE SUM(zzs) / SUM(bzs) END AS full_rate -- 满 FROM ( SELECT - zzs -- 在职数 - ,bzs -- 编制数 - FROM ods_hr_view_mbl_d - WHERE ny = '${p_ym}' - AND pq not in('89','267') -- 排除了佳美、悦汇 + 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}' )A UNION ALL SELECT @@ -1067,18 +1678,118 @@ CASE WHEN SUM(A.bzs) = 0 THEN 0 ELSE SUM(A.zzs) / SUM(A.bzs) END AS full_rate -- ,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 -- 片区 - ,SUM(zzs) AS zzs -- 在职数 - ,SUM(bzs) AS bzs -- 编制数 - FROM ods_hr_view_mbl_d - WHERE yd = '${p_ym}' - AND pq not in('89','267') -- 排除了佳美、悦汇 - GROUP BY pq - )A - LEFT JOIN - ( + ,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片区名称 @@ -1139,12 +1850,129 @@ CASE WHEN SUM(zzrs) = 0 THEN 0 FROM ( SELECT - zzrs -- 当天在职人数 - ,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') -- 排除了佳美、悦汇 + 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}' )A UNION ALL SELECT @@ -1169,19 +1997,126 @@ SELECT ELSE (SUM(zlzrs) / sum(zzrs)) / sum(lz_rate_target) END AS target_rate FROM - ( - SELECT - pq -- 片区 - ,SUM(zzrs) AS zzrs-- 当天在职人数 - ,sum(zlzrs) AS zlzrs -- 当天总离职人数 - FROM ods_hr_view_lzbl_d - WHERE LEFT(rq,7) = '${p_ym}' - AND pq not in('89','267') -- 排除了佳美、悦汇 - -- 排除了: - -- 89:佳美物业公司 - -- 153:领悦集团总部 - -- 267:悦汇发展公司 - GROUP BY pq +( + 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 ( From 475f76811866fe189ac4524b21afb5e6c3b38da7 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Wed, 6 Nov 2024 17:36:33 +0800 Subject: [PATCH 83/89] =?UTF-8?q?=E6=BB=A1=E7=BC=96=E7=8E=87=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E4=BD=BF=E7=94=A8ERP=E6=8F=90=E4=BE=9B=E7=9A=84?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xiazuan/5_manpower/2_员工满编率明细.sql | 216 +++++++++++++----- 1 file changed, 158 insertions(+), 58 deletions(-) diff --git a/finereport/xiazuan/5_manpower/2_员工满编率明细.sql b/finereport/xiazuan/5_manpower/2_员工满编率明细.sql index 5351e9e..1104114 100644 --- a/finereport/xiazuan/5_manpower/2_员工满编率明细.sql +++ b/finereport/xiazuan/5_manpower/2_员工满编率明细.sql @@ -9,61 +9,161 @@ SELECT ,CASE WHEN SUM(bzs) = 0 THEN 0 ELSE SUM(zzs) / SUM(bzs) END AS RATE -- 月均满编率 FROM ( - SELECT - pq -- 片区 - ,xm -- 项目 - ,zzs -- 在职数 - ,bzs -- 编制数 - FROM ods_hr_view_mbl_d - WHERE ny >= '${p_startym}' - AND ny <= '${p_ym}' - -- 注意 目前会有一个空的排名 是因为佳美物业未做映射 - AND pq NOT IN('89','267') - )A - LEFT JOIN - ( - SELECT - organ_code -- erp片区编码 - ,organ_name -- erp片区名称 - ,hr_organ_id -- hr片区编码 - ,hr_organ_name -- hr片区名称 - ,hr_comm_id -- hr项目id - ,hr_comm_name -- hr项目名称 - 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项目名称 - FROM dual - )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 -- 满编率目标 - ,avg_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 ('" + p_area +"')", "")} - GROUP BY - B.hr_comm_name - ,B.hr_organ_name \ No newline at end of file + 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_startym}' + AND A1.ny <= '${p_ym}' +)A +RIGHT JOIN +( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,hr_organ_id -- hr片区编码 + ,hr_organ_name -- hr片区名称 + ,hr_comm_id -- hr项目id + ,hr_comm_name -- hr项目名称 + 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项目名称 + FROM dual +)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 -- 满编率目标 + ,avg_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 ('" + p_area +"')", "")} +GROUP BY +B.hr_comm_name +,B.hr_organ_name \ No newline at end of file From 3a65a27a7771d98c4ed83d3aabdd9fe7f8652f76 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Fri, 8 Nov 2024 14:08:59 +0800 Subject: [PATCH 84/89] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9D=83=E9=99=90?= =?UTF-8?q?=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- finereport/kanban/pc/人力.sql | 732 ++++++++++++++++++++++++++-------- 1 file changed, 565 insertions(+), 167 deletions(-) diff --git a/finereport/kanban/pc/人力.sql b/finereport/kanban/pc/人力.sql index 402d4e0..0db4946 100644 --- a/finereport/kanban/pc/人力.sql +++ b/finereport/kanban/pc/人力.sql @@ -65,7 +65,15 @@ FROM third_department -- ====================================== -- report_指标卡_在职人数 -- ====================================== - +with one_to_many AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) + WHERE a.username = '${fine_username}' +) SELECT SUM(zzs) AS SL FROM @@ -188,7 +196,9 @@ FROM ,hr_organ_name ,hr_comm_id ,hr_comm_name + ,comm_name FROM dim_organ_mapping + WHERE length(hr_comm_id) > 0 GROUP BY organ_code ,organ_name @@ -196,6 +206,7 @@ FROM ,hr_organ_name ,hr_comm_id ,hr_comm_name + ,comm_name UNION ALL SELECT '0000' AS organ_code -- erp片区编码 @@ -204,15 +215,29 @@ FROM ,'领悦集团总部' AS hr_organ_name -- hr片区名称 ,'153' AS hr_comm_id -- hr项目id ,'领悦集团总部' AS hr_comm_name -- hr项目名称 + ,'' AS comm_name )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,"','")+"')", "")} +AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN ${if(len(p_area)>0,"B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")} + ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END + + -- ====================================== -- 指标卡_离职人数 -- ====================================== - +with one_to_many AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) + WHERE a.username = '${fine_username}' +) SELECT SUM(lzrs) AS SL FROM @@ -345,7 +370,9 @@ FROM ,hr_organ_name ,hr_comm_id ,hr_comm_name + ,comm_name FROM dim_organ_mapping + WHERE length(hr_comm_id) > 0 GROUP BY organ_code ,organ_name @@ -353,6 +380,7 @@ FROM ,hr_organ_name ,hr_comm_id ,hr_comm_name + ,comm_name UNION ALL SELECT '0000' AS organ_code -- erp片区编码 @@ -361,30 +389,90 @@ FROM ,'领悦集团总部' AS hr_organ_name -- hr片区名称 ,'153' AS hr_comm_id -- hr项目id ,'领悦集团总部' AS hr_comm_name -- hr项目名称 + ,'' AS comm_name )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,"','")+"')", "")} - +AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN ${if(len(p_area)>0,"B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")} + ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END -- ====================================== -- 指标卡_人力成本/行政成本 -- ====================================== +with one_to_many AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) + WHERE a.username = '${fine_username}' +) 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,"','")+"')", "")} - +coalesce(SUM(CASE WHEN A.cost_type = '人力成本' THEN A.actual_amount ELSE 0 END),0) AS lc_total_fee -- 人力成本费用 +,coalesce(SUM(CASE WHEN A.cost_type = '行政成本' THEN A.actual_amount ELSE 0 END),0) AS ac_total_fee -- 行政成本费用 +FROM +( + SELECT + * + FROM dw.ods_cost_collection_lc_ac + WHERE left(ym,4) = left('${p_ym}',4) + AND ym <= '${p_ym}' +)A + LEFT JOIN +( + SELECT + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + ,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 + ,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项目名称 + ,'' AS comm_name +)B +ON A.organ_code = B.hr_organ_id +and A.comm_id = B.hr_comm_id +WHERE 1 = 1 +${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN ${if(len(p_area)>0,"B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")} + ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END -- ====================================== -- 员工满编率柱状图 -- ====================================== - +with one_to_many AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) + WHERE a.username = '${fine_username}' + ) SELECT yd ,SUM(A.zzs) AS zzs -- 在职数 @@ -518,7 +606,9 @@ LEFT JOIN ,hr_organ_name ,hr_comm_id ,hr_comm_name + ,comm_name FROM dim_organ_mapping + WHERE length(hr_comm_id) > 0 GROUP BY organ_code ,organ_name @@ -526,6 +616,7 @@ LEFT JOIN ,hr_organ_name ,hr_comm_id ,hr_comm_name + ,comm_name UNION ALL SELECT '0000' AS organ_code -- erp片区编码 @@ -534,11 +625,15 @@ LEFT JOIN ,'领悦集团总部' AS hr_organ_name -- hr片区名称 ,'153' AS hr_comm_id -- hr项目id ,'领悦集团总部' AS hr_comm_name -- hr项目名称 + ,'' AS comm_name )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,"','")+"')", "")} +AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN ${if(len(p_area)>0,"B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")} + ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END group by yd @@ -549,6 +644,15 @@ yd -- 片区排名 ${IF(LEN(p_area)=0,"", "/*")} +with one_to_many AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) + WHERE a.username = '${fine_username}' +) SELECT T1.organ_comm AS organ_comm ,ROW_NUMBER() OVER(ORDER BY T1.RATE DESC) 排名 @@ -702,6 +806,8 @@ FROM 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,"','")+"')", "")} GROUP BY B.hr_organ_name )T1 @@ -709,6 +815,15 @@ ${IF(LEN(p_area)=0,"", "*/")} -- 项目排名 ${IF(LEN(p_area) > 0,"", "/*")} +with one_to_many AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) + WHERE a.username = '${fine_username}' + ) SELECT T1.organ_comm AS organ_comm ,ROW_NUMBER() OVER(ORDER BY T1.RATE DESC) 排名 @@ -834,30 +949,33 @@ FROM )A LEFT JOIN ( - 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项目名称 + SELECT + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + ,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 + ,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项目名称 + ,'' AS comm_name )B ON A.pq = B.hr_organ_id and A.xm = B.hr_comm_id @@ -874,6 +992,9 @@ FROM AND A.xm = C.comm_id WHERE 1=1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN ${if(len(p_area)>0,"B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")} + ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END GROUP BY B.hr_comm_name )T1 @@ -884,7 +1005,15 @@ ${IF(LEN(p_area)>0,"", "*/")} -- ====================================== -- 员工离职原因占比 -- ====================================== - +with one_to_many AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) + WHERE a.username = '${fine_username}' + ) SELECT A.lzlx AS lzlx -- 离职类型id ,A.lzlxname AS lzlxname -- 离职类型名称 @@ -913,7 +1042,9 @@ LEFT JOIN ,hr_organ_name ,hr_comm_id ,hr_comm_name + ,comm_name FROM dim_organ_mapping + WHERE length(hr_comm_id) > 0 GROUP BY organ_code ,organ_name @@ -921,6 +1052,7 @@ LEFT JOIN ,hr_organ_name ,hr_comm_id ,hr_comm_name + ,comm_name UNION ALL SELECT '0000' AS organ_code -- erp片区编码 @@ -929,17 +1061,30 @@ LEFT JOIN ,'领悦集团总部' AS hr_organ_name -- hr片区名称 ,'153' AS hr_comm_id -- hr项目id ,'领悦集团总部' AS hr_comm_name -- hr项目名称 + ,'' AS comm_name )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,"','")+"')", "")} +AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN ${if(len(p_area)>0,"B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")} + ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END -- ====================================== -- 人力行政成本费率柱状图 -- ====================================== ${if(p_type='人力',"","/*")} +with one_to_many AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) + WHERE a.username = '${fine_username}' +) SELECT T1.yr_month AS yr_month ,'人力成本' AS name @@ -950,27 +1095,69 @@ SELECT FROM ( SELECT - A.ym AS yr_month - ,A.lc_total_fee AS lc_total_fee - ,b.index_income_fact AS index_income_fact + A.ym AS yr_month + , SUM(A.lc_total_fee) AS lc_total_fee + , SUM(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 - )A + A.ym AS ym + ,A.organ_code AS organ_code + ,A1.comm_id AS comm_id -- erp项目 匹配财务收入填报 + ,A1.comm_name AS comm_name -- erp项目,用作权限控制 + ,A.lc_total_fee AS lc_total_fee + FROM + ( + -- 费控人力行政成本填报 + SELECT organ_code + , comm_id + , 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, comm_id) A + LEFT JOIN + (SELECT organ_code + , organ_name + , comm_id + , comm_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 + , comm_id + , comm_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片区名称 + , '' AS comm_id + , '' AS comm_name + , '153' AS hr_organ_id -- hr片区编码 + , '领悦集团总部' AS hr_organ_name -- hr片区名称 + , '153' AS hr_comm_id -- hr项目id + , '领悦集团总部' AS hr_comm_name -- hr项目名称 + ) A1 + ON A.organ_code = A1.organ_code + AND A.comm_id = A1.hr_comm_id + )A LEFT JOIN (-- 公司实际收入 SELECT yr_month ,organ_code + ,comm_id ,SUM(index_income_fact) AS index_income_fact -- 实际收入 FROM ods_caiwu_feecollection WHERE category = '物业' @@ -978,49 +1165,106 @@ FROM GROUP BY yr_month ,organ_code + ,comm_id )B - ON A.ym = B.yr_month - AND A.organ_code = B.organ_code + ON A.organ_code = B.organ_code + AND A.ym = B.yr_month + AND A.comm_id = B.comm_id WHERE 1 = 1 ${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN ${if(len(p_area)>0,"A.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")} + ELSE ${if(left(fine_role,2)=="项目","A.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END + GROUP BY A.ym )T1 ORDER BY T1.yr_month ${if(p_type='人力',"","*/")} ${if(p_type='行政',"","/*")} - +with one_to_many AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) + WHERE a.username = '${fine_username}' +) SELECT T1.yr_month AS yr_month ,'行政成本' AS name ,'行政成本费率' AS name_rate - ,T1.ac_total_fee AS total_fee -- 人力成本 + ,T1.ac_total_fee AS total_fee -- 行政成本 ,T1.index_income_fact AS index_income_fact -- 实际收入 ,T1.ac_total_fee / T1.index_income_fact AS fee_rate -- 人力成本费率 FROM ( SELECT - A.ym AS yr_month - ,A.ac_total_fee AS ac_total_fee -- 人力成本 - ,B.index_income_fact AS index_income_fact -- 实际收入 + A.ym AS yr_month + ,SUM(A.ac_total_fee) AS ac_total_fee -- 行政成本 + ,SUM(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 - ) A + A.ym AS ym + ,A.organ_code AS organ_code + ,A1.comm_id AS comm_id -- erp项目 匹配财务收入填报 + ,A1.comm_name AS comm_name-- erp项目,用作权限控制 + ,A.ac_total_fee AS ac_total_fee + FROM + ( -- 费控人力行政成本填报 + SELECT organ_code + , ym + , comm_id + , 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, comm_id + ) A + LEFT JOIN + ( + SELECT organ_code + , organ_name + , comm_id + , comm_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 + , comm_id + , comm_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片区名称 + , '' AS comm_id + , '' AS comm_name + , '153' AS hr_organ_id -- hr片区编码 + , '领悦集团总部' AS hr_organ_name -- hr片区名称 + , '153' AS hr_comm_id -- hr项目id + , '领悦集团总部' AS hr_comm_name -- hr项目名称 + ) A1 + ON A.organ_code = A1.organ_code + AND A.comm_id = A1.hr_comm_id + )A LEFT JOIN (-- 公司实际收入 SELECT yr_month ,organ_code + ,comm_id ,SUM(index_income_fact) AS index_income_fact -- 实际收入 FROM ods_caiwu_feecollection WHERE category = '物业' @@ -1028,12 +1272,17 @@ FROM GROUP BY yr_month ,organ_code + ,comm_id )B ON A.ym = B.yr_month - AND A.organ_code = B.organ_code + AND 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,"','")+"')", "")} - + ${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN ${if(len(p_area)>0,"A.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")} + ELSE ${if(left(fine_role,2)=="项目","A.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END + GROUP BY A.ym )T1 ORDER BY T1.yr_month ${if(p_type='行政',"","*/")} @@ -1048,7 +1297,7 @@ ${if(p_type='行政',"","*/")} -- 片区排名 ${if(and(len(p_area)=0,p_type='人力')," -- 片区排名开始", "/*")} - SELECT +SELECT A.organ_name AS organ_comm_name ,A.lc_total_fee AS actual_cost -- 人力成本 ,B.index_income_fact AS index_income_fact -- 实际收入 @@ -1065,6 +1314,7 @@ ${if(and(len(p_area)=0,p_type='人力')," -- 片区排名开始", "/*")} 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 A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} GROUP BY organ_code,organ_name )A LEFT JOIN @@ -1092,11 +1342,19 @@ ${if(and(len(p_area)=0,p_type='人力')," -- 片区排名开始", "/*")} )C ON A.organ_code = C.organ_code -${if(and(len(p_area)=0,p_type='人力')," -- 片区排名开始", "*/")} + ${if(and(len(p_area)=0,p_type='人力')," -- 片区排名开始", "*/")} ${if(and(len(p_area)=0,p_type='行政')," -- 片区排名开始", "/*")} - + with one_to_many AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) + WHERE a.username = '${fine_username}' + ) SELECT A.organ_name AS organ_comm_name ,A.ac_total_fee AS actual_cost -- 成本 @@ -1113,7 +1371,8 @@ SELECT ,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}' + AND ym <= '${p_ym}' + ${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} GROUP BY organ_code,organ_name )A LEFT JOIN @@ -1146,6 +1405,15 @@ ${if(and(len(p_area)=0,p_type='行政')," -- 片区排名开始", "*/")} -- 项目排名 ${if(and(len(p_area)>0,p_type='人力')," -- 片区排名开始", "/*")} +with one_to_many AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) + WHERE a.username = '${fine_username}' +) SELECT T.organ_comm_name AS organ_comm_name ,T.actual_cost AS actual_cost @@ -1154,64 +1422,120 @@ SELECT ,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.lc_total_fee) AS actual_cost -- 成本 + ,SUM(B.index_income_fact) AS index_income_fact -- 实际收入 + ,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 -- 费率目标 + FROM + ( SELECT + A1.organ_code AS organ_code + ,A1.comm_id AS comm_id + ,A1.comm_name AS comm_name + ,A1.lc_total_fee AS lc_total_fee + ,A2.comm_id AS erp_comm_id + 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 + )A1 + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_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 + ,comm_id + ,comm_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片区名称 + ,'' AS comm_id + ,'' AS comm_name + ,'153' AS hr_organ_id -- hr片区编码 + ,'领悦集团总部' AS hr_organ_name -- hr片区名称 + ,'153' AS hr_comm_id -- hr项目id + ,'领悦集团总部' AS hr_comm_name -- hr项目名称 + )A2 + ON A1.organ_code = A2.organ_code + and A1.comm_id = A2.hr_comm_id + where 1 = 1 + ${IF(LEN(p_area)>0," AND A1.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN ${if(len(p_area)>0,"A2.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")} + ELSE ${if(left(fine_role,2)=="项目","A2.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END + + )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}' + GROUP BY + organ_code,comm_id + )B + ON A.organ_code = B.organ_code + AND A.comm_id = B.comm_id + LEFT JOIN ( 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 -- 费率目标 - 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 - )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}' - 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 + 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 + GROUP BY A.comm_name +)T ${if(and(len(p_area)>0,p_type='人力')," -- 片区排名开始", "*/")} ${if(and(len(p_area)>0,p_type='行政')," -- 片区排名开始", "/*")} - +with one_to_many AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) + WHERE a.username = '${fine_username}' + ) SELECT T.organ_comm_name AS organ_comm_name ,T.actual_cost AS actual_cost @@ -1221,7 +1545,7 @@ T.organ_comm_name AS organ_comm_name ,T. target_fee_rate AS target_fee_rate -- 费率目标 FROM ( -SELECT + 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 -- 实际收入 @@ -1229,20 +1553,70 @@ SELECT ,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 + 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 + A1.organ_code AS organ_code + ,A1.comm_id AS comm_id + ,A1.comm_name AS comm_name + ,A1.ac_total_fee AS ac_total_fee + ,A2.comm_id AS erp_comm_id + 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 + )A1 + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_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 + ,comm_id + ,comm_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片区名称 + ,'' AS comm_id + ,'' AS comm_name + ,'153' AS hr_organ_id -- hr片区编码 + ,'领悦集团总部' AS hr_organ_name -- hr片区名称 + ,'153' AS hr_comm_id -- hr项目id + ,'领悦集团总部' AS hr_comm_name -- hr项目名称 + )A2 + ON A1.organ_code = A2.organ_code + and A1.comm_id = A2.hr_comm_id + where 1 = 1 + ${IF(LEN(p_area)>0," AND A1.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN ${if(len(p_area)>0,"A2.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")} + ELSE ${if(left(fine_role,2)=="项目","A2.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END + )A LEFT JOIN (-- 公司实际收入 @@ -1272,8 +1646,7 @@ FROM 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 + GROUP BY A.comm_name )T ${if(and(len(p_area)>0,p_type='行政')," -- 片区排名开始", "*/")} @@ -1286,6 +1659,15 @@ ${if(and(len(p_area)>0,p_type='行政')," -- 片区排名开始", "*/")} -- 片区 ${IF(LEN(p_area)=0,"", "/*")} +with one_to_many AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) + WHERE a.username = '${fine_username}' +) SELECT T.hr_organ_name AS hr_organ_name ,T.lz_rate AS lz_rate @@ -1343,6 +1725,9 @@ FROM 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,"','")+"')", "")} + GROUP BY B.hr_organ_name )T @@ -1351,7 +1736,15 @@ ${IF(LEN(p_area)=0,"", "*/")} ${IF(LEN(p_area)>0,"", "/*")} -- 项目 - +with one_to_many AS( + SELECT + a.username AS username -- 用户名 + ,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 + FROM ods_one_to_many_perm a + JOIN mysql.help_topic b + on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) + WHERE a.username = '${fine_username}' +) SELECT T.hr_organ_name AS hr_organ_name ,T.lz_rate AS lz_rate -- 离职率 @@ -1381,30 +1774,33 @@ FROM )A LEFT JOIN ( - 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项目名称 + SELECT + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + ,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 + ,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项目名称 + ,'' AS comm_name )B ON A.pq = B.hr_organ_id and A.xm = b.hr_comm_id @@ -1421,6 +1817,10 @@ FROM AND A.xm = C.comm_id where 1 = 1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN ${if(len(p_area)>0,"B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")} + ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END + GROUP BY B.hr_comm_name )T @@ -1663,8 +2063,6 @@ SELECT 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,"", "*/")} From 6f1b07e6e0d055af660c5f026eb0e5e4f255d38c Mon Sep 17 00:00:00 2001 From: yangkunan Date: Sat, 9 Nov 2024 19:47:29 +0800 Subject: [PATCH 85/89] =?UTF-8?q?=E5=85=B3=E9=94=AE=E8=B4=B9=E7=94=A8?= =?UTF-8?q?=E6=8C=87=E6=A0=87=E5=8E=86=E5=8F=B2=E6=95=B0=E6=8D=AE=E4=BF=9D?= =?UTF-8?q?=E5=AD=98=E5=8F=8A=E6=8C=87=E6=A0=87=E9=A2=84=E8=AD=A6=E6=8E=A8?= =?UTF-8?q?=E9=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/codeStyles/codeStyleConfig.xml | 2 +- .idea/sqldialects.xml | 6 + finereport/历史数据/今日收费历史数据保留.sql | 75 ++ finereport/历史数据/关键指标历史数据保留.sql | 211 ++++ finereport/预警/预警-片区.sql | 961 ++++++++++++++++++ finereport/预警/预警-项目级-客满完成率.sql | 190 ++++ finereport/预警/预警-项目级-收缴完成率.sql | 280 +++++ .../预警/预警-项目级-水电、综合、巡查.sql | 231 +++++ 8 files changed, 1955 insertions(+), 1 deletion(-) create mode 100644 finereport/历史数据/今日收费历史数据保留.sql create mode 100644 finereport/历史数据/关键指标历史数据保留.sql create mode 100644 finereport/预警/预警-片区.sql create mode 100644 finereport/预警/预警-项目级-客满完成率.sql create mode 100644 finereport/预警/预警-项目级-收缴完成率.sql create mode 100644 finereport/预警/预警-项目级-水电、综合、巡查.sql diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml index a55e7a1..79ee123 100644 --- a/.idea/codeStyles/codeStyleConfig.xml +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -1,5 +1,5 @@ - \ No newline at end of file diff --git a/.idea/sqldialects.xml b/.idea/sqldialects.xml index 5570155..a423c35 100644 --- a/.idea/sqldialects.xml +++ b/.idea/sqldialects.xml @@ -67,9 +67,15 @@ + + + + + + \ No newline at end of file diff --git a/finereport/历史数据/今日收费历史数据保留.sql b/finereport/历史数据/今日收费历史数据保留.sql new file mode 100644 index 0000000..461a1c7 --- /dev/null +++ b/finereport/历史数据/今日收费历史数据保留.sql @@ -0,0 +1,75 @@ + +DROP TABLE ods_history_today_fee_save; + + + +CREATE TABLE ods_history_today_fee_save( + dt VARCHAR(50) COMMENT '时间' +,extract_date VARCHAR(50) COMMENT '抽数日期' +,extract_time VARCHAR(50) COMMENT '抽数时间' +,metric_value VARCHAR(50) COMMENT '指标值' +)COMMENT = '今日收费历史数据保留'; + +SELECT * FROM ods_history_today_fee_save; +/* +总裁驾驶舱、财务看板PC端和移动端: +1、今日收费:最新拉取数据=上次拉取数据时、08:00之前数据大于50w时;推送角色 +2、今日收费:最新拉取数据为空; + */ + +INSERT INTO ods_history_today_fee_save +SELECT + CURRENT_DATE AS dt -- 当天 +,CURRENT_TIMESTAMP AS extract_date -- 抽数日期 +,CURRENT_TIME AS extract_time -- 抽数时间 +,sum(ifnull(pr_paid_amt,0) + ifnull(cu_paid_amt,0) + ifnull(fu_paid_amt,0))/10000 paid_amt +from dws_finance_today_fees_d +WHERE ParentCostCode not in ('0006','0009','0010','0011') +and MiddleCostCode not in ('00080013','00080014','00080015','00080016','00080025','00080029','00080033','00080036','00080037') +and commid not in(select comm_id from ods_remove_comm) +; + +-- 时间 上次拉取数据、当前拉取数据、8点前拉取数据 + +with base AS( +SELECT + t.dt AS dt +,t.extract_date AS extract_date +,t.extract_time AS extract_time +,t.metric_value AS metric_value +,row_number() OVER (PARTITION BY dt ORDER BY extract_date desc) as rk -- 根据抽数时间排序 + +FROM +( +SELECT +dt +,extract_date +,extract_time +,metric_value +-- 如果一个小时内多次抽数的情况,取最新的 +,row_number() OVER (PARTITION BY dt,hour(extract_date) ORDER BY extract_date desc) as rk +FROM ods_history_today_fee_save +WHERE dt = '${s_ym}' +)t +WHERE t.rk = 1 +) +SELECT + a.dt AS dt +,a.extract_date AS extract_date +,a.extract_time AS extract_time +,hour(a.extract_date) AS extract_hour +,a.metric_value AS current_value +,coalesce(b.metric_value,0) AS last_metric_value +,CASE WHEN hour(a.extract_date) < 8 THEN a.metric_value ELSE 0 END AS before_eight +,CASE WHEN hour(a.extract_date) < 8 AND a.metric_value > 50 THEN '1' + WHEN a.metric_value = b.metric_value THEN '1' + WHEN hour(a.extract_date) > 8 AND coalesce(a.metric_value,0) = 0 THEN '1' + ELSE '0' END AS is_exception -- 是否异常 1:是 0:否 +,CASE WHEN hour(a.extract_date) < 8 AND a.metric_value > 50 THEN '08:00之前数据大于50w' + WHEN a.metric_value = b.metric_value THEN '最新数据等于上次拉取数据' + WHEN hour(a.extract_date) > 8 AND coalesce(a.metric_value,0) = 0 THEN '最新拉取数据为空' + ELSE '最新数据等于上次拉取数据' END AS exception_rule +FROM base a +LEFT JOIN base b +on a.rk = b.rk - 1 +ORDER BY a.extract_date \ No newline at end of file diff --git a/finereport/历史数据/关键指标历史数据保留.sql b/finereport/历史数据/关键指标历史数据保留.sql new file mode 100644 index 0000000..340ebcc --- /dev/null +++ b/finereport/历史数据/关键指标历史数据保留.sql @@ -0,0 +1,211 @@ + +DROP TABLE ods_history_metric_save; + +CREATE TABLE ods_history_metric_save( + dt VARCHAR(50) COMMENT '时间' +,extract_time VARCHAR(50) COMMENT '抽数时间' +,metric_name VARCHAR(50) COMMENT '指标名称' +,metric_value VARCHAR(50) COMMENT '指标值' +)COMMENT = '关键指标历史数据保留'; + +SELECT * FROM ods_history_metric_save; +/* +总裁驾驶舱、财务看板PC端和移动端: +1、今日收费:最新拉取数据=上次拉取数据时、08:00之前数据大于50w时;推送角色 +2、今日收费:最新拉取数据为空; + +3、当期欠费金额:当日数据>昨日数据时; +4、往期欠费金额:当日数据>昨日数据时; +5、当期收缴率:当日数据<昨日数据时; +6、往期收缴率:当日数据<昨日数据时; +7、月度累计收费:当日数据<昨日数据时; +8、年度累计收费:当日数据<昨日数据时; + */ + + +-- 当期欠费金额 +-- 往期欠费金额 +-- 当期收缴率 +-- 往期收缴率 + +WITH base_metric AS( +select +sum((ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0))) / sum((ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0))) cu_collection_rate -- 当期收缴率 +,sum((- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0))) / sum((ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0))) pr_collection_rate -- 往期收缴率 +,sum((ifnull(pr_total_receivable_amt,0) + ifnull(pr_total_received_amt,0) + ifnull(cu_early_exempt_pr_amt,0) + ifnull(cu_exempt_pr_amt,0))-(- ifnull(cu_paid_pr_amt,0) - ifnull(cu_offset_pr_amt,0)))/10000 pr_owed_amt -- 往期欠费金额 +,sum((ifnull(cu_receivable_amt,0) + ifnull(pr_exempt_cu_amt,0) + ifnull(cu_exempt_cu_amt,0))-(ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(pr_offset_cu_amt,0) - ifnull(cu_offset_cu_amt,0)))/10000 cu_owed_amt -- 当期欠费金额 + +,0 AS thisy_paid_amt -- 年度累计收费 +,0 AS thism_paid_amt -- 月度累计收费 +from dwd_finance_fees_serial_d +where ParentCostCode = '0001' +and organ_name not in ('东湖商管','领悦总部','演示机构') +and commid not in(select comm_id from ods_remove_comm) +and ym = DATE_FORMAT(NOW(),'%Y-%m') +UNION ALL +select + 0 AS cu_collection_rate -- 当期收缴率 +,0 AS pr_collection_rate -- 往期收缴率 +,0 AS pr_owed_amt -- 往期欠费金额 +,0 AS cu_owed_amt -- 当期欠费金额 +,a.thisy_paid_amt AS thisy_paid_amt -- 年度累计收费 +,b.thism_paid_amt AS thism_paid_amt -- 月度累计收费 +from + ( + select + '集团' tmp + , sum(ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(cu_paid_pr_amt,0)) /10000 thisy_paid_amt + , sum(case when ParentCostCode = '0008' and MiddleCostCode in ('00080001','00080002','00080003','00080004','00080005','00080006','00080007','00080008','00080009','00080010','00080011','00080012','00080017','00080018','00080019','00080020','00080021','00080022','00080023','00080024','00080027','00080028','00080032','00080034','00080035') then (ifnull(pr_paid_cu_amt,0) + ifnull(cu_paid_cu_amt,0) - ifnull(cu_paid_pr_amt,0) - ifnull(cu_paid_fu_amt,0)) else 0 end) /10000 thism_shuidian_paid_amt + from dwd_finance_fees_serial_d a + where ym = date_format(current_date(),'%Y-%m') + and organ_name not in ('东湖商管','领悦总部','演示机构') + and ParentCostCode not in ('0006','0009','0010','0011') + and MiddleCostCode not in ('00080013','00080014','00080015','00080016','00080025','00080026','00080029','00080030','00080031','00080033','00080036','00080037') + and commid not in(select comm_id from ods_remove_comm) + + )a + left join + ( + select + '集团' tmp + , sum(ifnull(cu_paid_cu_amt,0) - ifnull(cu_paid_pr_amt,0)) /10000 thism_paid_amt + from dwd_finance_total_paid_fees_m a + where ym = date_format(current_date(),'%Y-%m') + and organ_name not in ('东湖商管','领悦总部','演示机构') + and ParentCostCode not in ('0006','0009','0010','0011') + and MiddleCostCode not in ('00080013','00080014','00080015','00080016','00080025','00080029','00080033','00080036','00080037') + and commid not in(select comm_id from ods_remove_comm) + )b + on a.tmp = b.tmp +) +SELECT + T.dt AS dt-- 前一天 + ,T.extract_time AS extract_time-- 抽数时间 + ,T.metric_name AS metric_name-- 指标名称 + ,SUM(T.metric_value) AS metric_value -- 指标值 +FROM +( + SELECT + DATE_ADD(CURRENT_DATE,INTERVAL -1 DAY) AS dt -- 前一天 + ,CURRENT_TIMESTAMP AS extract_time -- 抽数时间 + ,'当期收缴率' AS metric_name -- 指标名称 + ,cu_collection_rate AS metric_value -- 指标值 + FROM base_metric + UNION ALL + SELECT + DATE_ADD(CURRENT_DATE,INTERVAL -1 DAY) AS dt -- 前一天 + ,CURRENT_TIMESTAMP AS extract_time -- 抽数时间 + ,'往期收缴率' AS metric_name -- 指标名称 + ,pr_collection_rate AS metric_value -- 指标值 + FROM base_metric + UNION ALL + SELECT + DATE_ADD(CURRENT_DATE,INTERVAL -1 DAY) AS dt -- 前一天 + ,CURRENT_TIMESTAMP AS extract_time -- 抽数时间 + ,'往期欠费金额' AS metric_name -- 指标名称 + ,pr_owed_amt AS metric_value -- 指标值 + FROM base_metric + UNION ALL + SELECT + DATE_ADD(CURRENT_DATE,INTERVAL -1 DAY) AS dt -- 前一天 + ,CURRENT_TIMESTAMP AS extract_time -- 抽数时间 + ,'当期欠费金额' AS metric_name -- 指标名称 + ,cu_owed_amt AS metric_value -- 指标值 + FROM base_metric + UNION ALL + SELECT + DATE_ADD(CURRENT_DATE,INTERVAL -1 DAY) AS dt -- 前一天 + ,CURRENT_TIMESTAMP AS extract_time -- 抽数时间 + ,'年度累计收费' AS metric_name -- 指标名称 + ,thisy_paid_amt AS metric_value -- 指标值 + FROM base_metric + UNION ALL + SELECT + DATE_ADD(CURRENT_DATE,INTERVAL -1 DAY) AS dt -- 前一天 + ,CURRENT_TIMESTAMP AS extract_time -- 抽数时间 + ,'月度累计收费' AS metric_name -- 指标名称 + ,thism_paid_amt AS metric_value -- 指标值 + FROM base_metric +)T +GROUP BY T.dt,T.extract_time,T.metric_name +; + + +with base_date AS +( + SELECT + T.metric_name AS metric_name + ,sum(T.yesterday_value) AS yesterday_value + ,SUM(T.today_value) AS today_value + FROM + ( + SELECT A.metric_name AS metric_name -- 指标名称 + , 0 AS yesterday_value -- 昨日指标值 + , A.metric_value AS today_value -- 今日指标值 + FROM + ( + SELECT + metric_name + , metric_value + , ROW_NUMBER() OVER (PARTITION BY metric_name,dt ORDER BY extract_time DESC) AS rk + FROM ods_history_metric_save + WHERE LEFT(dt, 10) = DATE_SUB('${s_ym}', INTERVAL 1 DAY)) A + WHERE rk = 1 + UNION ALL + SELECT + A.metric_name AS metric_name -- 指标名称 + , A.metric_value AS yesterday_value -- 昨日指标值 + , 0 AS today_value -- 今日指标值 + FROM + ( + SELECT + metric_name + , metric_value + , ROW_NUMBER() OVER (PARTITION BY metric_name,dt ORDER BY extract_time DESC) AS rk + FROM ods_history_metric_save + WHERE LEFT(dt, 10) = DATE_SUB('${s_ym}', INTERVAL 2 DAY) + ) A + WHERE rk = 1 + )T + GROUP BY T.metric_name +) +SELECT +metric_name +,yesterday_value AS yesterday_value +,today_value AS today_value +,CASE WHEN metric_name = '当期欠费金额' THEN (CASE WHEN today_value > yesterday_value THEN '1' ELSE '0' END) + WHEN metric_name = '往期欠费金额' THEN (CASE WHEN today_value > yesterday_value THEN '1' ELSE '0' END) + WHEN metric_name = '当期收缴率' THEN (CASE WHEN today_value < yesterday_value THEN '1' ELSE '0' END) + WHEN metric_name = '往期收缴率' THEN (CASE WHEN today_value < yesterday_value THEN '1' ELSE '0' END) + WHEN metric_name = '月度累计收费' THEN (CASE WHEN today_value < yesterday_value THEN '1' ELSE '0' END) + WHEN metric_name = '年度累计收费' THEN (CASE WHEN today_value < yesterday_value THEN '1' ELSE '0' END) + END AS is_exception -- 是否异常 1:是 0:否 +,CASE WHEN metric_name = '当期欠费金额' THEN '当日数据>昨日数据' + WHEN metric_name = '往期欠费金额' THEN '当日数据>昨日数据' + WHEN metric_name = '当期收缴率' THEN '当日数据<昨日数据' + WHEN metric_name = '往期收缴率' THEN '当日数据<昨日数据' + WHEN metric_name = '月度累计收费' THEN '当日数据<昨日数据' + WHEN metric_name = '年度累计收费' THEN '当日数据<昨日数据' + END AS exception_rule -- 异常条件 + +/* +-- 异常指标规则: +3、当期欠费金额:当日数据>昨日数据时; +4、往期欠费金额:当日数据>昨日数据时; +5、当期收缴率:当日数据<昨日数据时; +6、往期收缴率:当日数据<昨日数据时; +7、月度累计收费:当日数据<昨日数据时; +8、年度累计收费:当日数据<昨日数据时; +*/ +FROM base_date +ORDER BY +CASE WHEN metric_name = '当期欠费金额' THEN 1 + WHEN metric_name = '往期欠费金额' THEN 2 + WHEN metric_name = '当期收缴率' THEN 3 + WHEN metric_name = '往期收缴率' THEN 4 + WHEN metric_name = '月度累计收费' THEN 5 + WHEN metric_name = '年度累计收费' THEN 6 + END + + +-- 测试数据 diff --git a/finereport/预警/预警-片区.sql b/finereport/预警/预警-片区.sql new file mode 100644 index 0000000..9506703 --- /dev/null +++ b/finereport/预警/预警-片区.sql @@ -0,0 +1,961 @@ +-- ====================================== +-- 预警-片区-回款率-30% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '回款率' + and comm_organ = '片区' + and index_value = '0.3' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.payment_rate from dim_early_warning_organ_d t1 + inner join b t2 on t1.payment_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +; + + + + +-- ====================================== +-- 预警-片区-客满完成率-90% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '客满完成率' + and comm_organ = '片区' + and index_value = '0.9' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.km_comple_rate from dim_early_warning_organ_d t1 + inner join b t2 on t1.km_comple_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +; + + + +-- ====================================== +-- 预警-片区-客满完成率-95% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '客满完成率' + and comm_organ = '片区' + and index_value = '0.95' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.km_comple_rate from dim_early_warning_organ_d t1 + inner join b t2 on t1.km_comple_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +; + + + +-- ====================================== +-- 预警-片区-当期收缴完成率-80% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '当期收缴完成率' + and comm_organ = '片区' + and index_value = '0.8' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.cu_coll_comple_rate from dim_early_warning_organ_d t1 + inner join b t2 on t1.cu_coll_comple_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +; + + + +-- ====================================== +-- 预警-片区-当期收缴完成率-75% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '当期收缴完成率' + and comm_organ = '片区' + and index_value = '0.75' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.cu_coll_comple_rate from dim_early_warning_organ_d t1 + inner join b t2 on t1.cu_coll_comple_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +; + + + +-- ====================================== +-- 预警-片区-当期收缴完成率-70% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '当期收缴完成率' + and comm_organ = '片区' + and index_value = '0.7' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.cu_coll_comple_rate from dim_early_warning_organ_d t1 + inner join b t2 on t1.cu_coll_comple_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +; + + + + +-- ====================================== +-- 预警-片区-往期收缴完成率-75% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '往期收缴完成率' + and comm_organ = '片区' + and index_value = '0.75' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.pr_coll_comple_rate from dim_early_warning_organ_d t1 + inner join b t2 on t1.pr_coll_comple_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +; + + + +-- ====================================== +-- 预警-片区-往期收缴完成率-70% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '往期收缴完成率' + and comm_organ = '片区' + and index_value = '0.7' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.pr_coll_comple_rate from dim_early_warning_organ_d t1 + inner join b t2 on t1.pr_coll_comple_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +; + + + + +-- ====================================== +-- 预警-片区-往期收缴完成率-80% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '往期收缴完成率' + and comm_organ = '片区' + and index_value = '0.8' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.pr_coll_comple_rate from dim_early_warning_organ_d t1 + inner join b t2 on t1.pr_coll_comple_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +; + + + + +-- ====================================== +-- 预警-片区-投诉关闭率-95% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '投诉关闭率' + and comm_organ = '片区' + and index_value = '0.95' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.ts_close_rate from dim_early_warning_organ_d t1 + inner join b t2 on t1.ts_close_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +; + + + + +-- ====================================== +-- 预警-片区-投诉关闭率-90% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '投诉关闭率' + and comm_organ = '片区' + and index_value = '0.9' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.ts_close_rate from dim_early_warning_organ_d t1 + inner join b t2 on t1.ts_close_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +; + + + + + + +-- ====================================== +-- 预警-片区-报事关闭率-80% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '报事关闭率' + and comm_organ = '片区' + and index_value = '0.8' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.report_close_rate from dim_early_warning_organ_d t1 + inner join b t2 on t1.report_close_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +; + + + + + +-- ====================================== +-- 预警-片区-报事关闭率-90% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '报事关闭率' + and comm_organ = '片区' + and index_value = '0.9' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.report_close_rate from dim_early_warning_organ_d t1 + inner join b t2 on t1.report_close_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +; + + + + + +-- ====================================== +-- 预警-片区-新零售收入完成率-70% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '新零售收入完成率' + and comm_organ = '片区' + and index_value = '0.7' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.xing_revenue_rate from dim_early_warning_organ_d t1 + inner join b t2 on t1.xing_revenue_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +; + + + + +-- ====================================== +-- 预警-片区-水电费收缴率-98% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '水电费收缴率' + and comm_organ = '片区' + and index_value = '0.98' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.water_electric_rate from dim_early_warning_organ_d t1 + inner join b t2 on t1.water_electric_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +; + + + + +-- ====================================== +-- 预警-片区-空间运营收入完成率-100% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '空间运营收入完成率' + and comm_organ = '片区' + and index_value = '1' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.space_operate_rate from dim_early_warning_organ_d t1 + inner join b t2 on t1.space_operate_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +; + + + + + +-- ====================================== +-- 预警-片区-综合收缴完成率-75% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '综合收缴完成率' + and comm_organ = '片区' + and index_value = '0.75' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.total_coll_comple_rate from dim_early_warning_organ_d t1 + inner join b t2 on t1.total_coll_comple_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +; + + + +-- ====================================== +-- 预警-片区-综合收缴完成率-80% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '综合收缴完成率' + and comm_organ = '片区' + and index_value = '0.8' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.total_coll_comple_rate from dim_early_warning_organ_d t1 + inner join b t2 on t1.total_coll_comple_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +; + + + +-- ====================================== +-- 预警-片区-综合收缴完成率-70% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '综合收缴完成率' + and comm_organ = '片区' + and index_value = '0.7' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.total_coll_comple_rate from dim_early_warning_organ_d t1 + inner join b t2 on t1.total_coll_comple_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +; + + + +-- ====================================== +-- 预警-片区-美居收入完成率-50% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '美居收入完成率' + and comm_organ = '片区' + and index_value = '0.5' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.meiju_revenue_rate from dim_early_warning_organ_d t1 + inner join b t2 on t1.meiju_revenue_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +; + + + + + +-- ====================================== +-- 预警-片区-设备空间巡查完成率-98% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '设备空间巡查完成率' + and comm_organ = '片区' + and index_value = '0.98' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.device_space_rate from dim_early_warning_organ_d t1 + inner join b t2 on t1.device_space_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +; + + + + +-- ====================================== +-- 预警-片区-资产租售收入完成率-50% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '资产租售收入完成率' + and comm_organ = '片区' + and index_value = '0.5' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.rent_revenue_rate from dim_early_warning_organ_d t1 + inner join b t2 on t1.rent_revenue_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +; + + + + + +-- ====================================== +-- 预警-片区-销户率-30% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '销户率' + and comm_organ = '片区' + and index_value = '0.3' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.account_rate from dim_early_warning_organ_d t1 + inner join b t2 on t1.account_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +; \ No newline at end of file diff --git a/finereport/预警/预警-项目级-客满完成率.sql b/finereport/预警/预警-项目级-客满完成率.sql new file mode 100644 index 0000000..69823f1 --- /dev/null +++ b/finereport/预警/预警-项目级-客满完成率.sql @@ -0,0 +1,190 @@ +-- ====================================== +-- 预警-项目级-客满完成率-95% +-- ====================================== +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '客满完成率' + and comm_organ = '项目' + and index_value = '0.95' + limit 1 + ), + c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) + + +), + d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.comm_name,t1.km_comple_rate from dim_early_warning_comm_d t1 + inner join b t2 on t1.km_comple_rate < t2.index_value + ), + e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' + ), + f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) + ), + g as( -- 要推送的项目人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '项目人员' + inner join d t3 on FIND_IN_SET(t3.comm_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +union all +select username,LoginCode,user_type,ProjectAuth from g +; + +-- ====================================== +-- 预警-项目级-客满完成率-90% +-- ====================================== +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '客满完成率' + and comm_organ = '项目' + and index_value = '0.9' + limit 1 + ), + c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) + + +), + d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.comm_name,t1.km_comple_rate from dim_early_warning_comm_d t1 + inner join b t2 on t1.km_comple_rate < t2.index_value + ), + e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' + ), + f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) + ), + g as( -- 要推送的项目人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '项目人员' + inner join d t3 on FIND_IN_SET(t3.comm_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +union all +select username,LoginCode,user_type,ProjectAuth from g +; + + + +-- ====================================== +-- 预警-项目级-客满完成率-85% +-- ====================================== +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '客满完成率' + and comm_organ = '项目' + and index_value = '0.85' + limit 1 + ), + c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) + + +), + d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.comm_name,t1.km_comple_rate from dim_early_warning_comm_d t1 + inner join b t2 on t1.km_comple_rate < t2.index_value + ), + e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' + ), + f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) + ), + g as( -- 要推送的项目人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '项目人员' + inner join d t3 on FIND_IN_SET(t3.comm_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +union all +select username,LoginCode,user_type,ProjectAuth from g +; + + +-- ====================================== +-- 预警-项目级-客满完成率-75% +-- ====================================== +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '客满完成率' + and comm_organ = '项目' + and index_value = '0.75' + limit 1 + ), + c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) + + +), + d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.comm_name,t1.km_comple_rate from dim_early_warning_comm_d t1 + inner join b t2 on t1.km_comple_rate < t2.index_value + ), + e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' + ), + f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) + ), + g as( -- 要推送的项目人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '项目人员' + inner join d t3 on FIND_IN_SET(t3.comm_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +union all +select username,LoginCode,user_type,ProjectAuth from g +; \ No newline at end of file diff --git a/finereport/预警/预警-项目级-收缴完成率.sql b/finereport/预警/预警-项目级-收缴完成率.sql new file mode 100644 index 0000000..b617a44 --- /dev/null +++ b/finereport/预警/预警-项目级-收缴完成率.sql @@ -0,0 +1,280 @@ +-- ====================================== +-- 预警-项目级-当期收缴完成率-60% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '当期收缴完成率' + and comm_organ = '项目' + and index_value = '0.6' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.comm_name,t1.cu_coll_comple_rate from dim_early_warning_comm_d t1 + inner join b t2 on t1.cu_coll_comple_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +), +g as( -- 要推送的项目人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '项目人员' + inner join d t3 on FIND_IN_SET(t3.comm_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +union all +select username,LoginCode,user_type,ProjectAuth from g +; + +-- ====================================== +-- 预警-项目级-当期收缴完成率-70% +-- ====================================== + + with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '当期收缴完成率' + and comm_organ = '项目' + and index_value = '0.7' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.comm_name,t1.cu_coll_comple_rate from dim_early_warning_comm_d t1 + inner join b t2 on t1.cu_coll_comple_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +), +g as( -- 要推送的项目人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '项目人员' + inner join d t3 on FIND_IN_SET(t3.comm_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +union all +select username,LoginCode,user_type,ProjectAuth from g +; + + + +-- ====================================== +-- 预警-项目级-当期收缴完成率-80% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '当期收缴完成率' + and comm_organ = '项目' + and index_value = '0.8' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b +join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.comm_name,t1.cu_coll_comple_rate from dim_early_warning_comm_d t1 + inner join b t2 on t1.cu_coll_comple_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +), +g as( -- 要推送的项目人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '项目人员' + inner join d t3 on FIND_IN_SET(t3.comm_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +union all +select username,LoginCode,user_type,ProjectAuth from g +; + +-- ====================================== +-- 预警-项目级-往期收缴完成率-60% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '往期收缴完成率' + and comm_organ = '项目' + and index_value = '0.6' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.comm_name,t1.pr_coll_comple_rate from dim_early_warning_comm_d t1 + inner join b t2 on t1.pr_coll_comple_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +), +g as( -- 要推送的项目人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '项目人员' + inner join d t3 on FIND_IN_SET(t3.comm_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +union all +select username,LoginCode,user_type,ProjectAuth from g +; + + +-- ====================================== +-- 预警-项目级-往期收缴完成率-70% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '往期收缴完成率' + and comm_organ = '项目' + and index_value = '0.7' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.comm_name,t1.pr_coll_comple_rate from dim_early_warning_comm_d t1 + inner join b t2 on t1.pr_coll_comple_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +), +g as( -- 要推送的项目人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '项目人员' + inner join d t3 on FIND_IN_SET(t3.comm_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +union all +select username,LoginCode,user_type,ProjectAuth from g +; + + + +-- ====================================== +-- 预警-项目级-往期收缴完成率-80% +-- ====================================== + +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '往期收缴完成率' + and comm_organ = '项目' + and index_value = '0.8' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.comm_name,t1.pr_coll_comple_rate from dim_early_warning_comm_d t1 + inner join b t2 on t1.pr_coll_comple_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +), +g as( -- 要推送的项目人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '项目人员' + inner join d t3 on FIND_IN_SET(t3.comm_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +union all +select username,LoginCode,user_type,ProjectAuth from g +; \ No newline at end of file diff --git a/finereport/预警/预警-项目级-水电、综合、巡查.sql b/finereport/预警/预警-项目级-水电、综合、巡查.sql new file mode 100644 index 0000000..102dcd4 --- /dev/null +++ b/finereport/预警/预警-项目级-水电、综合、巡查.sql @@ -0,0 +1,231 @@ +-- ====================================== +-- 预警-项目级-水电费收缴率-98% +-- ====================================== +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '水电费收缴率' + and comm_organ = '项目' + and index_value = '0.98' + limit 1 + ), + c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) + + +), + d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.comm_name,t1.water_electric_rate from dim_early_warning_comm_d t1 + inner join b t2 on t1.water_electric_rate < t2.index_value + ), + e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' + ), + f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) + ), + g as( -- 要推送的项目人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '项目人员' + inner join d t3 on FIND_IN_SET(t3.comm_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +union all +select username,LoginCode,user_type,ProjectAuth from g +; + +-- ====================================== +-- 预警-项目级-综合收缴完成率-80% +-- ====================================== +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '综合收缴完成率' + and comm_organ = '项目' + and index_value = '0.8' + limit 1 + ), + c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), + d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.comm_name,t1.total_coll_comple_rate from dim_early_warning_comm_d t1 + inner join b t2 on t1.total_coll_comple_rate < t2.index_value + ), + e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' + ), + f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) + ), + g as( -- 要推送的项目人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '项目人员' + inner join d t3 on FIND_IN_SET(t3.comm_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +union all +select username,LoginCode,user_type,ProjectAuth from g +; + + + +-- ====================================== +-- 预警-项目级-综合收缴完成率-70% +-- ====================================== +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), + b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '综合收缴完成率' + and comm_organ = '项目' + and index_value = '0.7' + limit 1 + ), + c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) + ), + d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.comm_name,t1.total_coll_comple_rate from dim_early_warning_comm_d t1 + inner join b t2 on t1.total_coll_comple_rate < t2.index_value + ), + e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' + ), + f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) + ), + g as( -- 要推送的项目人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '项目人员' + inner join d t3 on FIND_IN_SET(t3.comm_name,t2.ProjectAuth) + ) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +union all +select username,LoginCode,user_type,ProjectAuth from g +; + + +-- ====================================== +-- 预警-项目级-综合收缴完成率-60% +-- ====================================== +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '综合收缴完成率' + and comm_organ = '项目' + and index_value = '0.6' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.comm_name,t1.total_coll_comple_rate from dim_early_warning_comm_d t1 + inner join b t2 on t1.total_coll_comple_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +), +g as( -- 要推送的项目人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '项目人员' + inner join d t3 on FIND_IN_SET(t3.comm_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +union all +select username,LoginCode,user_type,ProjectAuth from g +; + + + +-- ====================================== +-- 预警-项目级-设备空间巡查完成率-98% +-- ====================================== +with a as( -- 所有有角色的人员 + select t1.username,t3.name as role_name from finedb.fine_user t1 + inner join finedb.fine_user_role_middle t2 on t1.id = t2.userId + inner join finedb.fine_custom_role t3 on t2.roleId = t3.id +), +b as( -- 找到单条预警规则** + select index_name,comm_organ,index_value,mang_organ from ods_index_early_warning + where index_name = '设备空间巡查完成率' + and comm_organ = '项目' + and index_value = '0.98' + limit 1 +), +c as( -- 找到关联的用户 + select distinct username from b + join a on FIND_IN_SET(a.role_name,b.mang_organ) +), +d as( -- 找到规则下受影响的项目** + select t1.organ_name,t1.comm_name,t1.device_space_rate from dim_early_warning_comm_d t1 + inner join b t2 on t1.device_space_rate < t2.index_value +), +e as( -- 要推送的总部人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '总部人员' +), +f as( -- 要推送的片区人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '片区人员' + inner join d t3 on FIND_IN_SET(t3.organ_name,t2.ProjectAuth) +), +g as( -- 要推送的项目人员 + select distinct t2.username,t2.LoginCode,t2.user_type,t2.ProjectAuth from c t1 + inner join v_erp_user_auth t2 on t1.username = t2.LoginCode and t2.user_type = '项目人员' + inner join d t3 on FIND_IN_SET(t3.comm_name,t2.ProjectAuth) +) +-- 要推送的人员合集 +select username,LoginCode,user_type,ProjectAuth from e +union all +select username,LoginCode,user_type,ProjectAuth from f +union all +select username,LoginCode,user_type,ProjectAuth from g +; From 24fd7ea0327a1fbc81393c4cf9b7480fbc150364 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Thu, 14 Nov 2024 19:22:13 +0800 Subject: [PATCH 86/89] =?UTF-8?q?=E7=A6=BB=E8=81=8C=E4=BA=BA=E6=95=B0?= =?UTF-8?q?=E5=8E=86=E5=8F=B2=E6=95=B0=E6=8D=AE=E8=A1=A5=E9=BD=90=E3=80=81?= =?UTF-8?q?=E6=9D=83=E9=99=90bug=E4=BF=AE=E5=A4=8D=E3=80=81=E8=B4=A2?= =?UTF-8?q?=E5=8A=A1=E5=8F=96=E6=95=B0=E5=8F=A3=E5=BE=84=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- finereport/kanban/mobile/人力_mobile.sql | 2318 +++++++++++++++++ finereport/kanban/pc/人力.sql | 372 ++- .../5_manpower/5_费控人力行政成本填报.sql | 18 +- .../xiazuan/5_manpower/2_员工满编率明细.sql | 10 +- .../5_manpower/4_人力行政成本费率明细.sql | 13 +- finereport/历史数据/今日收费历史数据保留.sql | 15 +- 6 files changed, 2669 insertions(+), 77 deletions(-) create mode 100644 finereport/kanban/mobile/人力_mobile.sql diff --git a/finereport/kanban/mobile/人力_mobile.sql b/finereport/kanban/mobile/人力_mobile.sql new file mode 100644 index 0000000..8ca3e09 --- /dev/null +++ b/finereport/kanban/mobile/人力_mobile.sql @@ -0,0 +1,2318 @@ +-- ====================================== +-- 指标卡_在职人数 +-- ====================================== +SELECT + SUM(zzs) AS SL +FROM +( + SELECT + A1.pq + ,A1.xm + ,SUM(A1.zzs) as zzs + FROM + ( + 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 + )A + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + ,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 + ,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项目名称 + ,'' AS comm_name + )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,"','")+"')", "")} +${IF(LEN(p_shop)!=0," and B.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} + +-- ====================================== +-- 指标卡_离职人数 +-- ====================================== + + +SELECT + SUM(lzrs) AS SL +FROM +( + SELECT + A1.pq AS pq + ,A1.xm AS xm + ,SUM(A1.lzrs) AS lzrs + FROM + ( + SELECT pq -- 片区 + , xm -- 项目 + , CONCAT(nd, '-', yd) AS ym -- 年月 + , lzrs -- 离职人数 + 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 + )A + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + ,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 + ,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项目名称 + ,'' AS comm_name + )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,"','")+"')", "")} + ${IF(LEN(p_shop)!=0," and B.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} + + + +-- ====================================== +-- 指标卡_人力行政成本 +-- ====================================== + +SELECT +coalesce(SUM(CASE WHEN A.cost_type = '人力成本' THEN A.actual_amount ELSE 0 END),0) AS lc_total_fee -- 人力成本费用 +,coalesce(SUM(CASE WHEN A.cost_type = '行政成本' THEN A.actual_amount ELSE 0 END),0) AS ac_total_fee -- 行政成本费用 +FROM +( + SELECT + * + FROM dw.ods_cost_collection_lc_ac + WHERE left(ym,4) = left('${p_ym}',4) + AND ym <= '${p_ym}' +)A + LEFT JOIN +( + SELECT + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + ,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 + ,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项目名称 + ,'' AS comm_name +)B +ON A.organ_code = B.organ_code +and A.comm_id = B.hr_comm_id +WHERE 1 = 1 +${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +${IF(LEN(p_shop)!=0," and B.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} + + +-- ====================================== +-- 指标卡_离职人数离职率/目标值 +-- ====================================== + +-- 整体 +${IF(LEN(p_area) = 0,"", "/*")} + +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 -- 离职率目标 +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}' +)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 +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 +where 1 = 1 +${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + +${IF(LEN(p_area) > 0,"", "*/")} + + +-- ====================================== +-- 指标卡_人力行政成本费率/目标值 +-- ====================================== + +-- 整体 +${IF(LEN(p_area)=0,"", "/*")} + +SELECT +SUM(T.lc_fee_rate) AS lc_fee_rate -- 人力成本费率 +,SUM(T.lc_fee_rate_target) AS lc_fee_rate_target -- 人力成本费率目标 +,CASE WHEN sum(T.lc_fee_rate_target) = 0 THEN 0 + ELSE SUM(T.lc_fee_rate) / sum(T.lc_fee_rate_target) END AS lc_target_rate -- 人力成本费率目标占比 +,SUM(T.ac_fee_rate) AS ac_fee_rate -- 行政成本费率 +,SUM(T.ac_fee_rate_target) AS ac_fee_rate_target -- 行政成本费率目标值 +,CASE WHEN sum(T.ac_fee_rate_target) = 0 THEN 0 + ELSE sum(T.ac_fee_rate) / sum(T.ac_fee_rate_target) END AS ac_target_rate -- 行政成本费率目标占比 +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 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 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 -- 行政成本费率 + FROM + ( + -- 费控人力行政成本填报 + 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 + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + organ_code + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + 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 + WHERE 1 = 1 + ${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +)T +${IF(LEN(p_area)>0,"", "*/")} + + + +-- ====================================== +-- 员工满编率柱状图 +-- ====================================== + +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 + ,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 + ,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项目名称 + ,'' AS comm_name +)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,"','")+"')", "")} +${IF(LEN(p_shop)!=0," and B.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} + +group by +yd +order by +CASE WHEN yd = '01' THEN 'a' + WHEN yd = '02' THEN 'b' + WHEN yd = '03' THEN 'c' + WHEN yd = '04' THEN 'd' + WHEN yd = '05' THEN 'e' + WHEN yd = '06' THEN 'f' + WHEN yd = '07' THEN 'g' + WHEN yd = '08' THEN 'h' + WHEN yd = '09' THEN 'i' + WHEN yd = '10' THEN 'j' + WHEN yd = '11' THEN 'k' + WHEN yd = '12' THEN 'l' END + + +-- ====================================== +-- 员工满编率排名 +-- ====================================== +-- 片区排名 + +${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_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 + FROM + ( + 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}' + )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 + ( + SELECT + organ_code + ,full_rate_target -- 满编率目标 + FROM ods_hr_collection_target_organ + WHERE ym = '${p_ym}' + )C + ON B.organ_code = C.organ_code + where 1 = 1 + ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + 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 + ( + SELECT + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + ,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 + ,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项目名称 + ,'' AS comm_name + )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 B.organ_code = C.organ_code + AND B.hr_comm_id = C.comm_id + WHERE 1=1 + ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +${IF(LEN(p_shop)!=0," and B.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} + GROUP BY + B.hr_comm_name +)T1 + +${IF(LEN(p_area)>0,"", "*/")} + + +-- ====================================== +-- 员工离职原因占比 +-- ====================================== +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 -- 片区 + ,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 + ,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 + ,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项目名称 + ,'' AS comm_name +)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,"','")+"')", "")} +${IF(LEN(p_shop)!=0," and B.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} + +-- ====================================== +-- 离职率排名 +-- ====================================== + +-- 片区 +${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_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 + FROM + ( + + SELECT + T.pq as pq + ,SUM(T.zzrs) AS zzrs + ,SUM(T.zlzrs) AS zlzrs + FROM + ( + SELECT + pq -- 片区 + ,LEFT(rq,7) AS ym + ,SUM(CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END) AS zzrs -- 在职人数 + ,SUM(zlzrs) AS zlzrs -- 当天总离职人数 + FROM ods_hr_view_lzbl_d + -- 排除了: + -- 89:佳美物业公司 + -- 267:悦汇发展公司 + GROUP BY pq,LEFT(rq,7) + UNION ALL + SELECT + T1.organ_code AS pq + ,T1.ym AS ym + ,(SUM(T1.begin_num ) + SUM(T1.end_num)) / 2 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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(feb_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(mar_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(apr_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(may_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jun_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jul_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(aug_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(sep_end_num,0) AS end_num -- 月末在职 + ,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.ym + )T + WHERE LEFT(ym,4) = left('${p_ym}',4) + AND LEFT(ym,7) <= '${p_ym}' + AND pq not in('89','267') -- 排除了佳美、悦汇 + group by T.pq + )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 + ( + SELECT + organ_code + ,lz_rate_target -- 离职率目标 + FROM ods_hr_collection_target_organ + WHERE ym = '${p_ym}' + )C + ON B.organ_code = C.organ_code + where 1 = 1 + ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + + 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 + T.pq as pq + ,T.xm AS xm + ,SUM(T.zzrs) AS zzrs + ,sum(T.zlzrs) AS zlzrs + FROM + ( + SELECT + pq -- 片区 + ,xm -- 项目 + ,LEFT(rq,7) AS ym + ,SUM(CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END) AS zzrs -- 在职人数 + ,SUM(zlzrs) AS zlzrs -- 当天总离职人数 + FROM ods_hr_view_lzbl_d + GROUP BY pq, xm, rq + UNION ALL + + SELECT + T1.organ_code AS pq + ,T1.comm_id AS xm + ,T1.ym AS ym + ,(SUM(T1.begin_num ) + SUM(T1.end_num)) / 2 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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(feb_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(mar_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(apr_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(may_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jun_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jul_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(aug_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(sep_end_num,0) AS end_num -- 月末在职 + ,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 + )T + WHERE LEFT(ym,4) = left('${p_ym}',4) + AND LEFT(ym,7) <= '${p_ym}' + AND pq not in('89','267') -- 排除了佳美、悦汇 + AND (pq is NOT NULL OR xm IS NOT NULL ) + group by T.pq,T.xm + )A + LEFT JOIN + ( SELECT + organ_code + ,organ_name + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + ,comm_id + ,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 + ,comm_name + ,comm_id + 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项目名称 + ,'' AS comm_id + ,'' AS comm_name + )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 B.organ_code = C.organ_code + AND B.hr_comm_id = C.comm_id + where 1 = 1 + ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_shop)!=0," and B.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} + + GROUP BY + B.hr_comm_name + )T +${IF(LEN(p_area)>0,"", "*/")} + + +-- ====================================== +-- 人力行政成本费率柱状图 +-- ====================================== + +${if(p_type='人力',"","/*")} +SELECT + T1.yr_month AS yr_month + ,'人力成本' AS name + ,'人力成本费率' AS name_rate + ,T1.lc_total_fee AS total_fee -- 人力成本 + ,T1.index_income_fact AS index_income_fact -- 实际收入 + ,T1.lc_total_fee / T1.index_income_fact AS fee_rate -- 人力成本费率 +FROM +( + SELECT + A.ym AS yr_month + , SUM(A.lc_total_fee) AS lc_total_fee + , SUM(B.index_income_fact) AS index_income_fact + FROM + ( + SELECT + A.ym AS ym + ,A.organ_code AS organ_code + ,A1.comm_id AS comm_id -- erp项目 匹配财务收入填报 + ,A1.hr_comm_name AS hr_comm_name -- erp项目,用作权限控制 + ,A.lc_total_fee AS lc_total_fee + FROM + ( + -- 费控人力行政成本填报 + SELECT organ_code + , comm_id + , 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, comm_id) A + LEFT JOIN + (SELECT organ_code + , organ_name + , comm_id + , comm_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 + , comm_id + , comm_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片区名称 + , '' AS comm_id + , '' AS comm_name + , '153' AS hr_organ_id -- hr片区编码 + , '领悦集团总部' AS hr_organ_name -- hr片区名称 + , '153' AS hr_comm_id -- hr项目id + , '领悦集团总部' AS hr_comm_name -- hr项目名称 + ) A1 + ON A.organ_code = A1.organ_code + AND A.comm_id = A1.hr_comm_id + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + yr_month + ,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) + GROUP BY + yr_month + ,organ_code + ,comm_id + )B + ON A.organ_code = B.organ_code + AND A.ym = B.yr_month + AND A.comm_id = B.comm_id + WHERE 1 = 1 + ${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_shop)!=0," and A.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} + GROUP BY A.ym +)T1 +ORDER BY T1.yr_month + +${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 -- 行政成本 + ,T1.index_income_fact AS index_income_fact -- 实际收入 + ,T1.ac_total_fee / T1.index_income_fact AS fee_rate -- 人力成本费率 +FROM +( + SELECT + A.ym AS yr_month + ,SUM(A.ac_total_fee) AS ac_total_fee -- 行政成本 + ,SUM(B.index_income_fact) AS index_income_fact -- 实际收入 + FROM + ( + SELECT + A.ym AS ym + ,A.organ_code AS organ_code + ,A1.comm_id AS comm_id -- erp项目 匹配财务收入填报 + ,A1.hr_comm_name AS hr_comm_name -- hr项目,用作权限控制 + ,A.ac_total_fee AS ac_total_fee + FROM + ( -- 费控人力行政成本填报 + SELECT organ_code + , ym + , comm_id + , 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, comm_id + ) A + LEFT JOIN + ( + SELECT organ_code + , organ_name + , comm_id + , comm_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 + , comm_id + , comm_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片区名称 + , '' AS comm_id + , '' AS comm_name + , '153' AS hr_organ_id -- hr片区编码 + , '领悦集团总部' AS hr_organ_name -- hr片区名称 + , '153' AS hr_comm_id -- hr项目id + , '领悦集团总部' AS hr_comm_name -- hr项目名称 + ) A1 + ON A.organ_code = A1.organ_code + AND A.comm_id = A1.hr_comm_id + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + yr_month + ,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) + GROUP BY + yr_month + ,organ_code + ,comm_id + )B + ON A.ym = B.yr_month + AND A.organ_code = B.organ_code + AND A.comm_id = B.comm_id + WHERE 1=1 + ${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_shop)!=0," and A.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} + GROUP BY A.ym +)T1 +ORDER BY T1.yr_month +${if(p_type='行政',"","*/")} + + +-- ====================================== +-- 人力行政成本费率排名 +-- ====================================== + +-- 片区排名 + +${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}' + ${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + 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 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 + +${if(and(len(p_area)=0,p_type='人力')," -- 片区排名开始", "*/")} + + +${if(and(len(p_area)=0,p_type='行政')," -- 片区排名开始", "/*")} + +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.ac_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 -- 费率目标 + 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}' + ${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + GROUP BY organ_code,organ_name + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + organ_code + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + 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 +${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.lc_total_fee) AS actual_cost -- 成本 + ,SUM(B.index_income_fact) AS index_income_fact -- 实际收入 + ,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 -- 费率目标 + FROM + ( SELECT + A1.organ_code AS organ_code + ,A1.comm_id AS comm_id + ,A1.comm_name AS comm_name + ,A1.lc_total_fee AS lc_total_fee + ,A2.comm_id AS erp_comm_id + 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 + )A1 + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_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 + ,comm_id + ,comm_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片区名称 + ,'' AS comm_id + ,'' AS comm_name + ,'153' AS hr_organ_id -- hr片区编码 + ,'领悦集团总部' AS hr_organ_name -- hr片区名称 + ,'153' AS hr_comm_id -- hr项目id + ,'领悦集团总部' AS hr_comm_name -- hr项目名称 + )A2 + ON A1.organ_code = A2.organ_code + and A1.comm_id = A2.hr_comm_id + where 1 = 1 + ${IF(LEN(p_area)>0," AND A1.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +${IF(LEN(p_shop)!=0," and A2.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} + + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + organ_code + ,comm_id + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month = '${p_ym}' + GROUP BY + organ_code,comm_id + )B + ON A.organ_code = B.organ_code + AND A.erp_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 + 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 + A1.organ_code AS organ_code + ,A1.comm_id AS comm_id + ,A1.comm_name AS comm_name + ,A1.ac_total_fee AS ac_total_fee + ,A2.comm_id AS erp_comm_id + 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 + )A1 + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_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 + ,comm_id + ,comm_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片区名称 + ,'' AS comm_id + ,'' AS comm_name + ,'153' AS hr_organ_id -- hr片区编码 + ,'领悦集团总部' AS hr_organ_name -- hr片区名称 + ,'153' AS hr_comm_id -- hr项目id + ,'领悦集团总部' AS hr_comm_name -- hr项目名称 + )A2 + ON A1.organ_code = A2.organ_code + and A1.comm_id = A2.hr_comm_id + where 1 = 1 + ${IF(LEN(p_area)>0," AND A1.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + ${IF(LEN(p_shop)!=0," and A2.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} + + )A + LEFT JOIN + (-- 公司实际收入 + SELECT + organ_code + ,comm_id + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month = '${p_ym}' + GROUP BY + organ_code,comm_id + )B + ON A.organ_code = B.organ_code + AND A.erp_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 + GROUP BY A.comm_name + )T +${if(and(len(p_area)>0,p_type='行政')," -- 片区排名开始", "*/")} \ No newline at end of file diff --git a/finereport/kanban/pc/人力.sql b/finereport/kanban/pc/人力.sql index 0db4946..214b7e0 100644 --- a/finereport/kanban/pc/人力.sql +++ b/finereport/kanban/pc/人力.sql @@ -452,7 +452,7 @@ FROM ,'领悦集团总部' AS hr_comm_name -- hr项目名称 ,'' AS comm_name )B -ON A.organ_code = B.hr_organ_id +ON A.organ_code = B.organ_code and A.comm_id = B.hr_comm_id WHERE 1 = 1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} @@ -805,7 +805,7 @@ FROM FROM ods_hr_collection_target_organ WHERE ym = '${p_ym}' )C - ON A.pq = C.organ_code + ON B.organ_code = C.organ_code where 1 = 1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} GROUP BY @@ -988,8 +988,8 @@ FROM FROM ods_hr_collection_target WHERE ym = '${p_ym}' )C - ON A.pq = C.organ_code - AND A.xm = C.comm_id + ON B.organ_code = C.organ_code + AND B.hr_comm_id = C.comm_id WHERE 1=1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL @@ -1325,8 +1325,7 @@ SELECT ,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}' + AND yr_month = '${p_ym}' GROUP BY organ_code )B @@ -1342,7 +1341,7 @@ SELECT )C ON A.organ_code = C.organ_code - ${if(and(len(p_area)=0,p_type='人力')," -- 片区排名开始", "*/")} +${if(and(len(p_area)=0,p_type='人力')," -- 片区排名开始", "*/")} ${if(and(len(p_area)=0,p_type='行政')," -- 片区排名开始", "/*")} @@ -1359,7 +1358,7 @@ 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 排名 -- 费率排名 + ,ROW_NUMBER() OVER (ORDER BY A.ac_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 -- 费率目标 FROM @@ -1382,8 +1381,7 @@ SELECT ,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}' + AND yr_month = '${p_ym}' GROUP BY organ_code )B @@ -1502,13 +1500,12 @@ FROM ,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}' + AND yr_month = '${p_ym}' GROUP BY organ_code,comm_id )B ON A.organ_code = B.organ_code - AND A.comm_id = B.comm_id + AND A.erp_comm_id = B.comm_id LEFT JOIN ( SELECT @@ -1626,13 +1623,12 @@ FROM ,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}' + AND yr_month = '${p_ym}' GROUP BY organ_code,comm_id )B ON A.organ_code = B.organ_code - AND A.comm_id = B.comm_id + AND A.erp_comm_id = B.comm_id LEFT JOIN ( SELECT @@ -1669,30 +1665,158 @@ with one_to_many AS( WHERE a.username = '${fine_username}' ) 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 排名 + 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_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 + 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 + T.pq as pq + ,SUM(T.zzrs) AS zzrs + ,SUM(T.zlzrs) AS zlzrs FROM ( SELECT - pq -- 片区 - ,xm -- 项目 - ,SUM(zzrs) AS zzrs -- 当天在职人数 - ,SUM(zlzrs) AS zlzrs -- 当天总离职人数 + pq -- 片区 + ,LEFT(rq,7) AS ym + ,SUM(CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END) 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 + -- 排除了: + -- 89:佳美物业公司 + -- 267:悦汇发展公司 + GROUP BY pq,LEFT(rq,7) + UNION ALL + SELECT + T1.organ_code AS pq + ,T1.ym AS ym + ,(SUM(T1.begin_num ) + SUM(T1.end_num)) / 2 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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(feb_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(mar_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(apr_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(may_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jun_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jul_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(aug_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(sep_end_num,0) AS end_num -- 月末在职 + ,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.ym + )T + WHERE LEFT(ym,4) = left('${p_ym}',4) + AND LEFT(ym,7) <= '${p_ym}' + AND pq not in('89','267') -- 排除了佳美、悦汇 + group by T.pq )A LEFT JOIN ( @@ -1724,13 +1848,12 @@ FROM FROM ods_hr_collection_target_organ WHERE ym = '${p_ym}' )C - ON A.pq = C.organ_code + ON B.organ_code = C.organ_code where 1 = 1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} - GROUP BY - B.hr_organ_name - )T + B.hr_organ_name +)T ${IF(LEN(p_area)=0,"", "*/")} @@ -1758,19 +1881,148 @@ FROM ELSE SUM(A.zlzrs) / SUM(A.zzrs) END AS lz_rate ,SUM(C.lz_rate_target) AS lz_rate_target - + FROM + ( + SELECT + T.pq as pq + ,T.xm AS xm + ,SUM(T.zzrs) AS zzrs + ,sum(T.zlzrs) AS zlzrs 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}' + ,LEFT(rq,7) AS ym + ,SUM(CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END) AS zzrs -- 在职人数 + ,SUM(zlzrs) AS zlzrs -- 当天总离职人数 + FROM ods_hr_view_lzbl_d + GROUP BY pq, xm, rq + UNION ALL + + SELECT + T1.organ_code AS pq + ,T1.comm_id AS xm + ,T1.ym AS ym + ,(SUM(T1.begin_num ) + SUM(T1.end_num)) / 2 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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(feb_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(mar_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(apr_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(may_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jun_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jul_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(aug_end_num,0) AS end_num -- 月末在职 + ,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_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(sep_end_num,0) AS end_num -- 月末在职 + ,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 + )T + WHERE LEFT(ym,4) = left('${p_ym}',4) + AND LEFT(ym,7) <= '${p_ym}' AND pq not in('89','267') -- 排除了佳美、悦汇 - GROUP BY pq, xm + AND (pq is NOT NULL OR xm IS NOT NULL ) + group by T.pq,T.xm )A LEFT JOIN ( @@ -1781,6 +2033,7 @@ FROM ,hr_organ_name ,hr_comm_id ,hr_comm_name + ,comm_id ,comm_name FROM dim_organ_mapping WHERE length(hr_comm_id) > 0 @@ -1792,6 +2045,7 @@ FROM ,hr_comm_id ,hr_comm_name ,comm_name + ,comm_id UNION ALL SELECT '0000' AS organ_code -- erp片区编码 @@ -1800,6 +2054,7 @@ FROM ,'领悦集团总部' AS hr_organ_name -- hr片区名称 ,'153' AS hr_comm_id -- hr项目id ,'领悦集团总部' AS hr_comm_name -- hr项目名称 + ,'' AS comm_id ,'' AS comm_name )B ON A.pq = B.hr_organ_id @@ -1813,8 +2068,8 @@ FROM FROM ods_hr_collection_target WHERE ym = '${p_ym}' )C - ON A.pq = C.organ_code - AND A.xm = C.comm_id + ON B.organ_code = C.organ_code + AND B.hr_comm_id = C.comm_id where 1 = 1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL @@ -1837,27 +2092,25 @@ ${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 -- 行政成本费率目标占比 +SUM(T.lc_fee_rate) AS lc_fee_rate -- 人力成本费率 +,SUM(T.lc_fee_rate_target) AS lc_fee_rate_target -- 人力成本费率目标 +,CASE WHEN sum(T.lc_fee_rate_target) = 0 THEN 0 + ELSE SUM(T.lc_fee_rate) / sum(T.lc_fee_rate_target) END AS lc_target_rate -- 人力成本费率目标占比 +,SUM(T.ac_fee_rate) AS ac_fee_rate -- 行政成本费率 +,SUM(T.ac_fee_rate_target) AS ac_fee_rate_target -- 行政成本费率目标值 +,CASE WHEN sum(T.ac_fee_rate_target) = 0 THEN 0 + ELSE sum(T.ac_fee_rate) / sum(T.ac_fee_rate_target) END AS ac_target_rate -- 行政成本费率目标占比 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 -- 人力成本费率 + 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 -- 行政成本费率 + 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 @@ -1911,8 +2164,7 @@ SELECT ,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}' + AND yr_month = '${p_ym}' GROUP BY organ_code )B ON A.organ_code = B.organ_code diff --git a/finereport/tianbao/5_manpower/5_费控人力行政成本填报.sql b/finereport/tianbao/5_manpower/5_费控人力行政成本填报.sql index 6aaa888..9810743 100644 --- a/finereport/tianbao/5_manpower/5_费控人力行政成本填报.sql +++ b/finereport/tianbao/5_manpower/5_费控人力行政成本填报.sql @@ -27,13 +27,29 @@ SELECT ,budget_amount -- 成本预算值 ,actual_amount -- 成本实际值' FROM ods_cost_collection_lc_ac +where organ_code = '0117' WHERE ym = '${p_ym}' AND cost_type = '${p_type}' +拿乌鲁木齐片区核对: +人力成本实际值(2024-01月至2024-10月): 809.89万元 +财务物业实际收入(2024-01月至2024-10月): 6471.01 万元 +人力成本费率=人力成本实际值/财务物业实际收入: 809.89 / 6471 = 0.1251568537 = 12.52% - + SELECT + organ_code + ,organ_name + ,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) = '2024' + AND yr_month < '2024-11' + GROUP BY + organ_code + ,organ_name TRUNCATE TABLE ods_cost_collection_lc_ac; diff --git a/finereport/xiazuan/5_manpower/2_员工满编率明细.sql b/finereport/xiazuan/5_manpower/2_员工满编率明细.sql index 1104114..1a6c017 100644 --- a/finereport/xiazuan/5_manpower/2_员工满编率明细.sql +++ b/finereport/xiazuan/5_manpower/2_员工满编率明细.sql @@ -129,6 +129,8 @@ RIGHT JOIN ,hr_organ_name -- hr片区名称 ,hr_comm_id -- hr项目id ,hr_comm_name -- hr项目名称 + ,comm_id + ,comm_name FROM dim_organ_mapping WHERE length(hr_comm_id) > 0 GROUP BY @@ -138,6 +140,8 @@ RIGHT JOIN ,hr_organ_name ,hr_comm_id ,hr_comm_name + ,comm_id + ,comm_name UNION ALL SELECT '0000' AS organ_code -- erp片区编码 @@ -146,6 +150,8 @@ RIGHT JOIN ,'领悦集团总部' AS hr_organ_name -- hr片区名称 ,'153' AS hr_comm_id -- hr项目id ,'领悦集团总部' AS hr_comm_name -- hr项目名称 + ,'' AS comm_id + ,'' AS comm_name FROM dual )B ON A.pq = B.hr_organ_id @@ -160,8 +166,8 @@ LEFT JOIN FROM ods_hr_collection_target WHERE ym = '${p_ym}' )C -ON A.pq = C.organ_code -AND A.xm = C.comm_id +ON B.organ_code = C.organ_code +AND B.hr_comm_id = C.comm_id WHERE 1=1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('" + p_area +"')", "")} GROUP BY diff --git a/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql b/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql index 03dfb89..bd06930 100644 --- a/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql +++ b/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql @@ -222,7 +222,7 @@ ${if(p_type='人力',"","/*")} ,SUM(index_income_fact) AS index_income_fact -- 实际收入 FROM ods_caiwu_feecollection WHERE category = '物业' - AND yr_month >= '${p_startym}' + AND LEFT(yr_month,4) = left('${p_ym}',4) AND yr_month <= '${p_ym}' GROUP BY organ_code,comm_id @@ -249,8 +249,7 @@ ${if(p_type='人力',"","/*")} ,lc_fee_rate_target -- 人力成本费率目标 ,ac_fee_rate_target -- 行政成本费率目标 FROM ods_cost_collection_target - WHERE left(ym,4) = left('${p_ym}',4) - AND length(ym) = 4 + WHERE ym = '${p_ym}' )D ON A.organ_code = D.organ_code AND A.comm_id = D.comm_id @@ -337,8 +336,8 @@ FROM ,SUM(index_income_fact) AS index_income_fact -- 实际收入 FROM ods_caiwu_feecollection WHERE category = '物业' - AND yr_month >= '${p_startym}' - AND yr_month <= '${p_ym}' + AND LEFT(yr_month,4) = left('${p_ym}',4) + AND yr_month <= '${p_ym}' GROUP BY organ_code,comm_id )B @@ -364,8 +363,8 @@ FROM ,lc_fee_rate_target -- 人力成本费率目标 ,ac_fee_rate_target -- 行政成本费率目标 FROM ods_cost_collection_target - WHERE left(ym,4) = left('${p_ym}',4) - AND length(ym) = 4 + WHERE ym = '${p_ym}' + )D ON A.organ_code = D.organ_code AND A.comm_id = D.comm_id diff --git a/finereport/历史数据/今日收费历史数据保留.sql b/finereport/历史数据/今日收费历史数据保留.sql index 461a1c7..2f19573 100644 --- a/finereport/历史数据/今日收费历史数据保留.sql +++ b/finereport/历史数据/今日收费历史数据保留.sql @@ -19,10 +19,10 @@ SELECT * FROM ods_history_today_fee_save; INSERT INTO ods_history_today_fee_save SELECT - CURRENT_DATE AS dt -- 当天 -,CURRENT_TIMESTAMP AS extract_date -- 抽数日期 -,CURRENT_TIME AS extract_time -- 抽数时间 -,sum(ifnull(pr_paid_amt,0) + ifnull(cu_paid_amt,0) + ifnull(fu_paid_amt,0))/10000 paid_amt + LEFT(CURRENT_DATE,10) AS dt -- 当天 +,CURRENT_TIMESTAMP() AS extract_date -- 抽数日期 +,CURRENT_TIME() AS extract_time -- 抽数时间 +,sum(ifnull(pr_paid_amt,0) + ifnull(cu_paid_amt,0) + ifnull(fu_paid_amt,0))/10000 metric_value from dws_finance_today_fees_d WHERE ParentCostCode not in ('0006','0009','0010','0011') and MiddleCostCode not in ('00080013','00080014','00080015','00080016','00080025','00080029','00080033','00080036','00080037') @@ -37,8 +37,7 @@ SELECT ,t.extract_date AS extract_date ,t.extract_time AS extract_time ,t.metric_value AS metric_value -,row_number() OVER (PARTITION BY dt ORDER BY extract_date desc) as rk -- 根据抽数时间排序 - +,row_number() OVER (PARTITION BY LEFT(dt,10) ORDER BY extract_date desc) as rk -- 根据抽数时间排序 FROM ( SELECT @@ -49,9 +48,11 @@ dt -- 如果一个小时内多次抽数的情况,取最新的 ,row_number() OVER (PARTITION BY dt,hour(extract_date) ORDER BY extract_date desc) as rk FROM ods_history_today_fee_save -WHERE dt = '${s_ym}' +WHERE LEFT(dt,10) = '${s_ym}' )t WHERE t.rk = 1 +AND hour(extract_date) >= 7 +AND hour(extract_date) <= 24 ) SELECT a.dt AS dt From 9a6a9fa7fae1a5ec4237c9820293dac505b15175 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Fri, 15 Nov 2024 17:22:48 +0800 Subject: [PATCH 87/89] =?UTF-8?q?=E4=B8=8B=E9=92=BB=E6=98=8E=E7=BB=86?= =?UTF-8?q?=E8=A1=A8=E4=B8=8E=E7=9C=8B=E6=9D=BF=E4=BF=9D=E6=8C=81=E4=B8=80?= =?UTF-8?q?=E8=87=B4=E3=80=81=E6=BB=A1=E7=BC=96=E7=8E=87=E5=8E=86=E5=8F=B2?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=A1=A5=E9=BD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- finereport/kanban/mobile/人力_mobile.sql | 516 +++++++------- finereport/kanban/pc/人力.sql | 620 +++++------------ finereport/kanban/pc/总裁.sql | 634 +++++++++++++++++- .../xiazuan/2_operation/住服比异常项目.sql | 36 +- .../xiazuan/5_manpower/2_员工满编率明细.sql | 124 +++- .../xiazuan/5_manpower/3_员工离职率明细.sql | 3 +- .../5_manpower/4_人力行政成本费率明细.sql | 589 +++++++++++----- 7 files changed, 1640 insertions(+), 882 deletions(-) diff --git a/finereport/kanban/mobile/人力_mobile.sql b/finereport/kanban/mobile/人力_mobile.sql index 8ca3e09..88ca789 100644 --- a/finereport/kanban/mobile/人力_mobile.sql +++ b/finereport/kanban/mobile/人力_mobile.sql @@ -7,112 +7,31 @@ FROM ( SELECT A1.pq - ,A1.xm + -- ,A1.xm ,SUM(A1.zzs) as zzs FROM ( SELECT pq -- 片区 - ,xm -- 项目 + -- ,xm -- 项目 ,ny AS ym ,zzs -- 在职人数 FROM ods_hr_view_mbl_d -- - WHERE ny >= '2024-10' + 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 + SELECT + organ_code as pq + ,concat(left(ym,4),'-',right(ym,2)) as ym + ,SUM(zzs) AS zzs + -- ,SUM(bzs) AS bzs + FROM ods_hr_history_bz_num + WHERE 1 = 1 + GROUP BY organ_code,concat(left(ym,4),'-',right(ym,2)) )A1 WHERE A1.ym = '${p_ym}' - GROUP BY A1.pq,A1.xm + GROUP BY A1.pq )A LEFT JOIN ( @@ -120,35 +39,35 @@ FROM organ_code ,organ_name ,hr_organ_id - ,hr_organ_name - ,hr_comm_id - ,hr_comm_name - ,comm_name + -- ,hr_organ_name + -- ,hr_comm_id + -- ,hr_comm_name + -- ,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 - ,comm_name + -- ,hr_organ_name + -- ,hr_comm_id + -- ,hr_comm_name + -- ,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项目名称 - ,'' AS comm_name + -- ,'领悦集团总部' AS hr_organ_name -- hr片区名称 + -- ,'153' AS hr_comm_id -- hr项目id + -- ,'领悦集团总部' AS hr_comm_name -- hr项目名称 + -- ,'' AS comm_name )B ON A.pq = B.hr_organ_id - and A.xm = b.hr_comm_id + -- and A.xm = b.hr_comm_id where 1 = 1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} -${IF(LEN(p_shop)!=0," and B.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} +-- ${IF(LEN(p_shop)!=0," and B.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} -- ====================================== -- 指标卡_离职人数 @@ -162,21 +81,21 @@ FROM SELECT A1.pq AS pq ,A1.xm AS xm - ,SUM(A1.lzrs) AS lzrs + ,SUM(A1.zlzrs) AS lzrs FROM ( - SELECT pq -- 片区 + SELECT pq -- 片区 , xm -- 项目 , CONCAT(nd, '-', yd) AS ym -- 年月 - , lzrs -- 离职人数 - FROM ods_hr_view_lzrs_d -- 离职人数 + , zlzrs -- 离职人数 + FROM ods_hr_view_lzbl_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 + ,SUM(T1.active_quit) + SUM(T1.pass_quit ) AS zlzrs FROM ( SELECT @@ -394,17 +313,20 @@ FROM ,SUM(A1.zlzrs) AS zlzrs FROM ( - SELECT + SELECT LEFT(rq,7) AS ny - ,zzrs -- 当天在职人数 - ,zlzrs -- 当天总离职人数 + ,(SUM(CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END) + + SUM(CASE WHEN rq = LAST_DAY(CONCAT('${p_ym}','-01')) THEN zzrs ELSE 0 END)) / 2 + AS zzrs -- 当天在职人数 + ,SUM(zlzrs) AS zlzrs -- 当天总离职人数 FROM ods_hr_view_lzbl_d WHERE LEFT(rq,7) >= '2024-10' AND pq not in('89','267') -- 排除了佳美、悦汇 + group by LEFT(rq,7) UNION ALL SELECT T1.ym AS ny - ,SUM(T1.begin_num) AS zzrs + ,(SUM(T1.begin_num) + SUM(T1.end_num)) / 2 AS zzrs ,SUM(T1.active_quit) + SUM(T1.pass_quit ) AS zlzrs FROM ( @@ -417,6 +339,7 @@ FROM ,COALESCE(jan_active_quit,0) AS active_quit -- 主动离职人数 ,COALESCE(jan_pass_quit,0) AS pass_quit -- 被动离职人数 ,COALESCE(sep_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT @@ -428,6 +351,7 @@ FROM ,COALESCE(feb_active_quit,0) AS active_quit -- 主动离职人数 ,COALESCE(feb_pass_quit,0) AS pass_quit -- 被动离职人数 ,COALESCE(sep_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT @@ -439,6 +363,7 @@ FROM ,COALESCE(mar_active_quit,0) AS active_quit -- 主动离职人数 ,COALESCE(mar_pass_quit,0) AS pass_quit -- 被动离职人数 ,COALESCE(sep_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT @@ -451,6 +376,8 @@ FROM ,COALESCE(apr_active_quit,0) AS active_quit -- 主动离职人数 ,COALESCE(apr_pass_quit,0) AS pass_quit -- 被动离职人数 ,COALESCE(sep_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 + FROM ods_hr_history_erp_date UNION ALL SELECT @@ -463,6 +390,8 @@ FROM ,COALESCE(may_active_quit,0) AS active_quit -- 主动离职人数 ,COALESCE(may_pass_quit,0) AS pass_quit -- 被动离职人数 ,COALESCE(sep_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 + FROM ods_hr_history_erp_date UNION ALL SELECT @@ -474,6 +403,8 @@ FROM ,COALESCE(jun_active_quit,0) AS active_quit -- 主动离职人数 ,COALESCE(jun_pass_quit,0) AS pass_quit -- 被动离职人数 ,COALESCE(sep_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 + FROM ods_hr_history_erp_date UNION ALL SELECT @@ -485,6 +416,7 @@ FROM ,COALESCE(jul_active_quit,0) AS active_quit -- 主动离职人数 ,COALESCE(jul_pass_quit,0) AS pass_quit -- 被动离职人数 ,COALESCE(sep_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT @@ -496,6 +428,8 @@ FROM ,COALESCE(aug_active_quit,0) AS active_quit -- 主动离职人数 ,COALESCE(aug_pass_quit,0) AS pass_quit -- 被动离职人数 ,COALESCE(sep_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 + FROM ods_hr_history_erp_date UNION ALL SELECT @@ -507,12 +441,13 @@ FROM ,COALESCE(sep_active_quit,0) AS active_quit -- 主动离职人数 ,COALESCE(sep_pass_quit,0) AS pass_quit -- 被动离职人数 ,COALESCE(sep_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_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}' + WHERE A1.ny = '${p_ym}' )A UNION ALL SELECT @@ -544,10 +479,12 @@ FROM ,A1.zlzrs AS zlzrs FROM ( - SELECT + SELECT LEFT(rq, 7) AS ny , pq -- 片区 - , SUM(zzrs) AS zzrs-- 当天在职人数 + ,(SUM(CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END) + + SUM(CASE WHEN rq = LAST_DAY(CONCAT('${p_ym}','-01')) THEN zzrs ELSE 0 END)) / 2 + AS zzrs -- 当天在职人数 , SUM(zlzrs) AS zlzrs -- 当天总离职人数 FROM ods_hr_view_lzbl_d WHERE LEFT(rq, 7) >= '2024-10' @@ -560,7 +497,7 @@ FROM UNION ALL SELECT T1.ym AS ny , T1.organ_code AS pq - , SUM(T1.begin_num) AS zzrs + ,(SUM(T1.begin_num) + SUM(T1.end_num)) / 2 AS zzrs , SUM(T1.active_quit) + SUM(T1.pass_quit) AS zlzrs FROM (SELECT organ_code , organ_name @@ -570,6 +507,7 @@ FROM , COALESCE(jan_active_quit, 0) AS active_quit -- 主动离职人数 , COALESCE(jan_pass_quit, 0) AS pass_quit -- 被动离职人数 , COALESCE(sep_begin_num, 0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT organ_code @@ -580,6 +518,7 @@ FROM , COALESCE(feb_active_quit, 0) AS active_quit -- 主动离职人数 , COALESCE(feb_pass_quit, 0) AS pass_quit -- 被动离职人数 , COALESCE(sep_begin_num, 0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT organ_code @@ -590,6 +529,7 @@ FROM , COALESCE(mar_active_quit, 0) AS active_quit -- 主动离职人数 , COALESCE(mar_pass_quit, 0) AS pass_quit -- 被动离职人数 , COALESCE(sep_begin_num, 0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT organ_code @@ -601,6 +541,7 @@ FROM , COALESCE(apr_active_quit, 0) AS active_quit -- 主动离职人数 , COALESCE(apr_pass_quit, 0) AS pass_quit -- 被动离职人数 , COALESCE(sep_begin_num, 0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT organ_code @@ -612,6 +553,7 @@ FROM , COALESCE(may_active_quit, 0) AS active_quit -- 主动离职人数 , COALESCE(may_pass_quit, 0) AS pass_quit -- 被动离职人数 , COALESCE(sep_begin_num, 0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT organ_code @@ -622,6 +564,7 @@ FROM , COALESCE(jun_active_quit, 0) AS active_quit -- 主动离职人数 , COALESCE(jun_pass_quit, 0) AS pass_quit -- 被动离职人数 , COALESCE(sep_begin_num, 0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT organ_code @@ -632,6 +575,7 @@ FROM , COALESCE(jul_active_quit, 0) AS active_quit -- 主动离职人数 , COALESCE(jul_pass_quit, 0) AS pass_quit -- 被动离职人数 , COALESCE(sep_begin_num, 0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT organ_code @@ -642,6 +586,7 @@ FROM , COALESCE(aug_active_quit, 0) AS active_quit -- 主动离职人数 , COALESCE(aug_pass_quit, 0) AS pass_quit -- 被动离职人数 , COALESCE(sep_begin_num, 0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT organ_code @@ -652,11 +597,11 @@ FROM , COALESCE(sep_active_quit, 0) AS active_quit -- 主动离职人数 , COALESCE(sep_pass_quit, 0) AS pass_quit -- 被动离职人数 , COALESCE(sep_begin_num, 0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_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}' + WHERE A1.ny = '${p_ym}' )A LEFT JOIN ( @@ -689,13 +634,148 @@ LEFT JOIN FROM ods_hr_collection_target_organ WHERE ym = '${p_ym}' )C - ON a.pq = c.organ_code + ON B.organ_code = C.organ_code where 1 = 1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} ${IF(LEN(p_area) > 0,"", "*/")} + +-- ====================================== +-- 指标卡_在职人数满编率/目标值 +-- ====================================== + + + +-- 整体 +${IF(LEN(p_area) = 0,"", "/*")} +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 -- 目标占比 +FROM +( +SELECT +CASE WHEN SUM(bzs) = 0 THEN 0 ELSE SUM(zzs) / SUM(bzs) END AS full_rate -- 满编率 +,0 AS full_rate_target -- 满编率目标值 +FROM +( + SELECT + SUM(A1.bzs) AS bzs + ,SUM(A1.zzs) AS zzs + FROM + ( + SELECT + ny + ,zzs -- 在职数 + ,bzs -- 编制数 + FROM ods_hr_view_mbl_d + WHERE pq NOT IN ('89', '267') -- 排除了佳美、悦汇 + AND ny > '2024-10' + UNION ALL + SELECT + concat(left(ym,4),'-',right(ym,2)) as ny + ,SUM(zzs) AS zzs + ,SUM(bzs) AS bzs + FROM ods_hr_history_bz_num + WHERE 1 = 1 + GROUP BY ym + )A1 + WHERE A1.ny = '${p_ym}' +)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 + ,SUM(A1.zzs) AS zzs + ,sum(A1.bzs) AS bzs + FROM + ( + SELECT + pq -- 片区 + ,ny + ,SUM(zzs) AS zzs -- 在职数 + ,SUM(bzs) AS bzs -- 编制数 + FROM ods_hr_view_mbl_d + WHERE pq not in('89','267') -- 排除了佳美、悦汇 + and ny > '2024-10' + GROUP BY pq,ny + UNION ALL + SELECT + organ_code as pq + ,concat(left(ym,4),'-',right(ym,2)) as ny + ,SUM(zzs) AS zzs + ,SUM(bzs) AS bzs + FROM ods_hr_history_bz_num + WHERE 1 = 1 + GROUP BY ym,organ_code + )A1 + WHERE A1.ny = '${p_ym}' + group by A1.ny,A1.pq +)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_organ -- 目标值收集 + WHERE ym = '${p_ym}' + )C + ON B.organ_code = C.organ_code + +WHERE 1 = 1 + ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} +${IF(LEN(p_area) > 0,"", "*/")} + + + -- ====================================== -- 指标卡_人力行政成本费率/目标值 -- ====================================== @@ -718,11 +798,11 @@ 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 yr_month = '${p_ym}') AS lc_fee_rate -- 人力成本费率 + AND yr_month = '${p_ym}' AND organ_name <> '佳美物业') 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 yr_month = '${p_ym}') AS ac_fee_rate -- 行政成本费率 + AND yr_month = '${p_ym}' AND organ_name <> '佳美物业' ) AS ac_fee_rate -- 行政成本费率 ,0 AS lc_fee_rate_target -- 人力成本费率 ,0 AS ac_fee_rate_target -- 行政成本费率 from dw.ods_cost_collection_lc_ac @@ -813,23 +893,35 @@ FROM A1.yd -- 月度 ,A1.ny ,A1.pq -- 片区 - ,A1.xm -- 项目 - ,A1.zzs -- 在职数 - ,A1.bzs -- 编制数 + -- ,A1.xm -- 项目 + ,SUM(A1.zzs) AS zzs -- 在职数 + ,sum(A1.bzs) AS bzs -- 编制数 FROM ( SELECT right(ny,2) AS yd -- 月度 ,ny ,pq -- 片区 - ,xm -- 项目 - ,CASE WHEN ny >= '2024-10' THEN zzs ELSE 0 end AS zzs-- 在职数 + -- ,xm -- 项目 + ,zzs -- 在职数 ,bzs -- 编制数 FROM ods_hr_view_mbl_d - WHERE left(ny,4) = LEFT('${p_ym}', 4) + WHERE left(ny,4) = LEFT('${p_ym}', 4) + AND ny > '2024-10' AND pq NOT IN ('89', '267') -- 排除了佳美、悦汇 UNION ALL SELECT + right(ym,2) as yd + ,ym as ny + ,organ_code as pq + -- ,'' AS xm + ,SUM(zzs) AS zzs + ,SUM(bzs) AS bzs + FROM ods_hr_history_bz_num + WHERE 1 = 1 + GROUP BY right(ym,2),ym,organ_code + + /* SELECT right(T1.ym,2) AS yd ,T1.ym AS ny ,T1.organ_code AS pq @@ -920,10 +1012,13 @@ FROM ,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 + GROUP BY T1.organ_code, T1.comm_id ,T1.ym*/ )A1 WHERE left(A1.ny,4) = LEFT('${p_ym}', 4) - + AND RIGHT(A1.ny,2) <= RIGHT('${p_ym}',2) +group by A1.yd + ,A1.ny + ,A1.pq )A LEFT JOIN ( @@ -932,9 +1027,9 @@ LEFT JOIN ,organ_name ,hr_organ_id ,hr_organ_name - ,hr_comm_id - ,hr_comm_name - ,comm_name + -- ,hr_comm_id + -- ,hr_comm_name + -- ,comm_name FROM dim_organ_mapping WHERE length(hr_comm_id) > 0 GROUP BY @@ -942,24 +1037,24 @@ LEFT JOIN ,organ_name ,hr_organ_id ,hr_organ_name - ,hr_comm_id - ,hr_comm_name - ,comm_name + -- ,hr_comm_id + -- ,hr_comm_name + -- ,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项目名称 - ,'' AS comm_name + -- ,'153' AS hr_comm_id -- hr项目id + -- ,'领悦集团总部' AS hr_comm_name -- hr项目名称 + -- ,'' AS comm_name )B ON A.pq = B.hr_organ_id -and A.xm = b.hr_comm_id +-- and A.xm = b.hr_comm_id where 1 = 1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} -${IF(LEN(p_shop)!=0," and B.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} +-- ${IF(LEN(p_shop)!=0," and B.hr_comm_name IN ('"+JOINARRAY(p_shop,"','")+"')","")} group by yd @@ -999,111 +1094,30 @@ FROM ( SELECT A1.pq AS pq - ,A1.zzs AS zzs - ,A1.bzs AS bzs + ,SUM(A1.zzs) AS zzs + ,SUM(A1.bzs) AS bzs FROM - ( - SELECT + ( SELECT pq -- 片区 ,ny - ,SUM(CASE WHEN ny >= '2024-10' THEN zzs ELSE 0 end) AS zzs -- 在职数 + ,SUM(zzs) AS zzs -- 在职数 ,SUM(bzs) AS bzs -- 编制数 FROM ods_hr_view_mbl_d WHERE pq NOT IN ('89','267') -- 这里剔除了佳美物业公司/悦汇发展公司 + and ny > '2024-10' 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 + organ_code as pq + ,concat(left(ym,4),'-',right(ym,2)) as ny + ,SUM(zzs) AS zzs + ,SUM(bzs) AS bzs + FROM ods_hr_history_bz_num + WHERE 1 = 1 + GROUP BY organ_code,concat(left(ym,4),'-',right(ym,2)) )A1 WHERE A1.ny = '${p_ym}' + group by A1.pq )A LEFT JOIN ( @@ -1411,9 +1425,12 @@ FROM SELECT pq -- 片区 ,LEFT(rq,7) AS ym - ,SUM(CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END) AS zzrs -- 在职人数 + ,(SUM(CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END) + + SUM(CASE WHEN rq = LAST_DAY(CONCAT('${p_ym}','-01')) THEN zzrs ELSE 0 END)) / 2 + AS zzrs -- 当天在职人数 ,SUM(zlzrs) AS zlzrs -- 当天总离职人数 FROM ods_hr_view_lzbl_d + WHERE LEFT(rq, 7) >= '2024-10' -- 排除了: -- 89:佳美物业公司 -- 267:悦汇发展公司 @@ -1536,12 +1553,11 @@ FROM )T1 GROUP BY T1.organ_code ,T1.ym )T - WHERE LEFT(ym,4) = left('${p_ym}',4) - AND LEFT(ym,7) <= '${p_ym}' + WHERE LEFT(ym,7) = '${p_ym}' AND pq not in('89','267') -- 排除了佳美、悦汇 group by T.pq )A - LEFT JOIN + RIGHT JOIN ( SELECT organ_code @@ -1610,9 +1626,12 @@ FROM pq -- 片区 ,xm -- 项目 ,LEFT(rq,7) AS ym - ,SUM(CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END) AS zzrs -- 在职人数 + ,(SUM(CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END) + + SUM(CASE WHEN rq = LAST_DAY(CONCAT('${p_ym}','-01')) THEN zzrs ELSE 0 END)) / 2 + AS zzrs -- 当天在职人数 ,SUM(zlzrs) AS zlzrs -- 当天总离职人数 FROM ods_hr_view_lzbl_d + WHERE LEFT(rq, 7) >= '2024-10' GROUP BY pq, xm, rq UNION ALL @@ -1734,13 +1753,12 @@ FROM )T1 GROUP BY T1.organ_code, T1.comm_id ,T1.ym )T - WHERE LEFT(ym,4) = left('${p_ym}',4) - AND LEFT(ym,7) <= '${p_ym}' + WHERE LEFT(ym,7) = '${p_ym}' AND pq not in('89','267') -- 排除了佳美、悦汇 AND (pq is NOT NULL OR xm IS NOT NULL ) group by T.pq,T.xm )A - LEFT JOIN + RIGHT JOIN ( SELECT organ_code ,organ_name @@ -2051,7 +2069,7 @@ SELECT ,A.ac_total_fee AS actual_cost -- 成本 ,B.index_income_fact AS index_income_fact -- 实际收入 ,ROW_NUMBER() OVER (ORDER BY A.ac_total_fee / B.index_income_fact DESC ) AS 排名 -- 费率排名 - ,A.lc_total_fee / B.index_income_fact AS fee_rate -- 行政成本费率 + ,A.ac_total_fee / B.index_income_fact AS fee_rate -- 行政成本费率 ,C.ac_fee_rate_target AS target_fee_rate -- 费率目标 FROM ( -- 费控人力行政成本填报 @@ -2212,7 +2230,7 @@ T.organ_comm_name AS organ_comm_name ,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 -- 费率目标 +,T.target_fee_rate AS target_fee_rate -- 费率目标 FROM ( SELECT diff --git a/finereport/kanban/pc/人力.sql b/finereport/kanban/pc/人力.sql index 214b7e0..cb47938 100644 --- a/finereport/kanban/pc/人力.sql +++ b/finereport/kanban/pc/人力.sql @@ -80,112 +80,31 @@ FROM ( SELECT A1.pq - ,A1.xm + -- ,A1.xm ,SUM(A1.zzs) as zzs FROM ( - SELECT - + SELECT pq -- 片区 - ,xm -- 项目 + -- ,xm -- 项目 ,ny AS ym ,zzs -- 在职人数 FROM ods_hr_view_mbl_d -- - WHERE ny >= '2024-10' + WHERE pq NOT IN ('89','267') -- 这里剔除了佳美物业公司/悦汇发展公司 + and 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 + UNION ALL + SELECT + organ_code as pq + ,concat(left(ym,4),'-',right(ym,2)) as ym + ,SUM(zzs) AS zzs + -- ,SUM(bzs) AS bzs + FROM ods_hr_history_bz_num + WHERE 1 = 1 + GROUP BY organ_code,concat(left(ym,4),'-',right(ym,2)) )A1 WHERE A1.ym = '${p_ym}' - GROUP BY A1.pq,A1.xm + GROUP BY A1.pq )A LEFT JOIN ( @@ -193,37 +112,37 @@ FROM organ_code ,organ_name ,hr_organ_id - ,hr_organ_name - ,hr_comm_id - ,hr_comm_name - ,comm_name + -- ,hr_organ_name + -- ,hr_comm_id + -- ,hr_comm_name + -- ,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 - ,comm_name + -- ,hr_organ_name + -- ,hr_comm_id + -- ,hr_comm_name + -- ,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项目名称 - ,'' AS comm_name + -- ,'领悦集团总部' AS hr_organ_name -- hr片区名称 + -- ,'153' AS hr_comm_id -- hr项目id + -- ,'领悦集团总部' AS hr_comm_name -- hr项目名称 + -- ,'' AS comm_name )B ON A.pq = B.hr_organ_id - and A.xm = b.hr_comm_id + -- and A.xm = b.hr_comm_id where 1 = 1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} -AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL - THEN ${if(len(p_area)>0,"B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")} - ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END +-- AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL +-- THEN ${if(len(p_area)>0,"B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")} +-- ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END -- ====================================== @@ -245,21 +164,21 @@ FROM SELECT A1.pq AS pq ,A1.xm AS xm - ,SUM(A1.lzrs) AS lzrs + ,SUM(A1.zlzrs) AS lzrs FROM ( SELECT pq -- 片区 , xm -- 项目 , CONCAT(nd, '-', yd) AS ym -- 年月 - , lzrs -- 离职人数 - FROM ods_hr_view_lzrs_d -- 离职人数 + , zlzrs -- 离职人数 + FROM ods_hr_view_lzbl_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 + ,SUM(T1.active_quit) + SUM(T1.pass_quit ) AS zlzrs FROM ( SELECT @@ -361,7 +280,7 @@ FROM AND pq not in('89','267') -- 排除了佳美、悦汇 GROUP BY A1.pq,A1.xm )A - LEFT JOIN + RIGHT JOIN ( SELECT organ_code @@ -464,6 +383,9 @@ AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = ' -- ====================================== -- 员工满编率柱状图 -- ====================================== + + + with one_to_many AS( SELECT a.username AS username -- 用户名 @@ -472,35 +394,47 @@ with one_to_many AS( JOIN mysql.help_topic b on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) WHERE a.username = '${fine_username}' - ) +) SELECT yd ,SUM(A.zzs) AS zzs -- 在职数 - ,SUM(A.bzs) AS bzs -- 编制数 - ,CASE WHEN sum(A.bzs) = 0 THEN 0 + ,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.yd -- 月度 ,A1.ny ,A1.pq -- 片区 - ,A1.xm -- 项目 - ,A1.zzs -- 在职数 - ,A1.bzs -- 编制数 + -- ,A1.xm -- 项目 + ,sum(A1.zzs) as zzs -- 在职数 + ,SUM(A1.bzs) AS bzs -- 编制数 FROM ( SELECT right(ny,2) AS yd -- 月度 ,ny ,pq -- 片区 - ,xm -- 项目 - ,CASE WHEN ny >= '2024-10' THEN zzs ELSE 0 end AS zzs-- 在职数 + -- ,xm -- 项目 + ,zzs -- 在职数 ,bzs -- 编制数 FROM ods_hr_view_mbl_d WHERE left(ny,4) = LEFT('${p_ym}', 4) + AND ny > '2024-10' AND pq NOT IN ('89', '267') -- 排除了佳美、悦汇 - UNION ALL + UNION all + SELECT + right(ym,2) as yd + ,ym as ny + ,organ_code as pq + -- ,'' AS xm + ,SUM(zzs) AS zzs + ,SUM(bzs) AS bzs + FROM ods_hr_history_bz_num + WHERE 1 = 1 + GROUP BY right(ym,2),ym,organ_code + /* UNION ALL SELECT right(T1.ym,2) AS yd ,T1.ym AS ny @@ -592,10 +526,13 @@ FROM ,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 + GROUP BY T1.organ_code, T1.comm_id ,T1.ym*/ )A1 WHERE left(A1.ny,4) = LEFT('${p_ym}', 4) - + AND RIGHT(A1.ny,2) <= RIGHT('${p_ym}',2) + group by A1.yd + ,A1.ny + ,A1.pq )A LEFT JOIN ( @@ -604,9 +541,9 @@ LEFT JOIN ,organ_name ,hr_organ_id ,hr_organ_name - ,hr_comm_id - ,hr_comm_name - ,comm_name + -- ,hr_comm_id + -- ,hr_comm_name + -- ,comm_name FROM dim_organ_mapping WHERE length(hr_comm_id) > 0 GROUP BY @@ -614,28 +551,41 @@ LEFT JOIN ,organ_name ,hr_organ_id ,hr_organ_name - ,hr_comm_id - ,hr_comm_name - ,comm_name +-- ,hr_comm_id +-- ,hr_comm_name +-- ,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项目名称 - ,'' AS comm_name + -- ,'153' AS hr_comm_id -- hr项目id + -- ,'领悦集团总部' AS hr_comm_name -- hr项目名称 + -- ,'' AS comm_name )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,"','")+"')", "")} -AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL - THEN ${if(len(p_area)>0,"B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")} - ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END +-- AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL +-- THEN ${if(len(p_area)>0,"B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '"+fine_username+"'" + ")","1=1")} +-- ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END group by yd +ORDER BY +CASE WHEN yd = '01' THEN 'a' + WHEN yd = '02' THEN 'b' + WHEN yd = '03' THEN 'c' + WHEN yd = '04' THEN 'd' + WHEN yd = '05' THEN 'e' + WHEN yd = '06' THEN 'f' + WHEN yd = '07' THEN 'g' + WHEN yd = '08' THEN 'h' + WHEN yd = '09' THEN 'i' + WHEN yd = '10' THEN 'j' + WHEN yd = '11' THEN 'k' + WHEN yd = '12' THEN 'l' END + -- ====================================== -- 员工满编率排名 @@ -668,111 +618,31 @@ FROM ( SELECT A1.pq AS pq - ,A1.zzs AS zzs - ,A1.bzs AS bzs + ,SUM(A1.zzs) AS zzs + ,SUM(A1.bzs) AS bzs FROM ( SELECT pq -- 片区 ,ny - ,SUM(CASE WHEN ny >= '2024-10' THEN zzs ELSE 0 end) AS zzs -- 在职数 + ,SUM(zzs) AS zzs -- 在职数 ,SUM(bzs) AS bzs -- 编制数 FROM ods_hr_view_mbl_d WHERE pq NOT IN ('89','267') -- 这里剔除了佳美物业公司/悦汇发展公司 + and ny > '2024-10' 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 + organ_code as pq + ,concat(left(ym,4),'-',right(ym,2)) as ny + ,SUM(zzs) AS zzs + ,SUM(bzs) AS bzs + FROM ods_hr_history_bz_num + WHERE 1 = 1 + GROUP BY organ_code,concat(left(ym,4),'-',right(ym,2)) )A1 WHERE A1.ny = '${p_ym}' + group by A1.pq )A LEFT JOIN ( @@ -1359,7 +1229,7 @@ SELECT ,A.ac_total_fee AS actual_cost -- 成本 ,B.index_income_fact AS index_income_fact -- 实际收入 ,ROW_NUMBER() OVER (ORDER BY A.ac_total_fee / B.index_income_fact DESC ) AS 排名 -- 费率排名 - ,A.lc_total_fee / B.index_income_fact AS fee_rate -- 行政成本费率 + ,A.ac_total_fee / B.index_income_fact AS fee_rate -- 行政成本费率 ,C.ac_fee_rate_target AS target_fee_rate -- 费率目标 FROM ( -- 费控人力行政成本填报 @@ -1688,9 +1558,12 @@ FROM SELECT pq -- 片区 ,LEFT(rq,7) AS ym - ,SUM(CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END) AS zzrs -- 在职人数 + ,(SUM(CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END) + + SUM(CASE WHEN rq = LAST_DAY(CONCAT('${p_ym}','-01')) THEN zzrs ELSE 0 END)) / 2 + AS zzrs -- 当天在职人数 ,SUM(zlzrs) AS zlzrs -- 当天总离职人数 FROM ods_hr_view_lzbl_d + WHERE LEFT(rq, 7) >= '2024-10' -- 排除了: -- 89:佳美物业公司 -- 267:悦汇发展公司 @@ -1813,12 +1686,11 @@ FROM )T1 GROUP BY T1.organ_code ,T1.ym )T - WHERE LEFT(ym,4) = left('${p_ym}',4) - AND LEFT(ym,7) <= '${p_ym}' + WHERE LEFT(ym,7) = '${p_ym}' AND pq not in('89','267') -- 排除了佳美、悦汇 group by T.pq )A - LEFT JOIN + right JOIN ( SELECT organ_code @@ -1894,9 +1766,12 @@ FROM pq -- 片区 ,xm -- 项目 ,LEFT(rq,7) AS ym - ,SUM(CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END) AS zzrs -- 在职人数 + ,(SUM(CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END) + + SUM(CASE WHEN rq = LAST_DAY(CONCAT('${p_ym}','-01')) THEN zzrs ELSE 0 END)) / 2 + AS zzrs -- 当天在职人数 ,SUM(zlzrs) AS zlzrs -- 当天总离职人数 FROM ods_hr_view_lzbl_d + WHERE LEFT(rq, 7) >= '2024-10' GROUP BY pq, xm, rq UNION ALL @@ -2018,13 +1893,12 @@ FROM )T1 GROUP BY T1.organ_code, T1.comm_id ,T1.ym )T - WHERE LEFT(ym,4) = left('${p_ym}',4) - AND LEFT(ym,7) <= '${p_ym}' + WHERE LEFT(ym,7) = '${p_ym}' AND pq not in('89','267') -- 排除了佳美、悦汇 AND (pq is NOT NULL OR xm IS NOT NULL ) group by T.pq,T.xm )A - LEFT JOIN + RIGHT JOIN ( SELECT organ_code @@ -2106,11 +1980,11 @@ 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 yr_month = '${p_ym}') AS lc_fee_rate -- 人力成本费率 + AND yr_month = '${p_ym}' AND organ_name <> '佳美物业') 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 yr_month = '${p_ym}') AS ac_fee_rate -- 行政成本费率 + AND yr_month = '${p_ym}' AND organ_name <> '佳美物业') AS ac_fee_rate -- 行政成本费率 ,0 AS lc_fee_rate_target -- 人力成本费率 ,0 AS ac_fee_rate_target -- 行政成本费率 from dw.ods_cost_collection_lc_ac @@ -2211,100 +2085,19 @@ FROM ( SELECT ny - ,CASE WHEN ny >= '2024-10' THEN zzs ELSE 0 end AS zzs-- 在职数 + ,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 + AND ny > '2024-10' + UNION ALL + SELECT + concat(left(ym,4),'-',right(ym,2)) as ny + ,SUM(zzs) AS zzs + ,SUM(bzs) AS bzs + FROM ods_hr_history_bz_num + WHERE 1 = 1 + GROUP BY ym )A1 WHERE A1.ny = '${p_ym}' )A @@ -2332,111 +2125,31 @@ FROM SELECT A1.ny AS ny ,A1.pq AS pq - ,A1.zzs AS zzs - ,A1.bzs AS bzs + ,SUM(A1.zzs) AS zzs + ,sum(A1.bzs) AS bzs FROM ( SELECT pq -- 片区 ,ny - ,SUM(CASE WHEN ny >= '2024-10' THEN zzs ELSE 0 end) AS zzs -- 在职数 + ,SUM(zzs) AS zzs -- 在职数 ,SUM(bzs) AS bzs -- 编制数 FROM ods_hr_view_mbl_d WHERE pq not in('89','267') -- 排除了佳美、悦汇 + and ny > '2024-10' 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 + UNION ALL + SELECT + organ_code as pq + ,concat(left(ym,4),'-',right(ym,2)) as ny + ,SUM(zzs) AS zzs + ,SUM(bzs) AS bzs + FROM ods_hr_history_bz_num + WHERE 1 = 1 + GROUP BY ym,organ_code )A1 WHERE A1.ny = '${p_ym}' + group by A1.ny,A1.pq )A LEFT JOIN ( @@ -2466,11 +2179,10 @@ LEFT JOIN SELECT organ_code -- erp片区code ,full_rate_target -- 满编率目标 - FROM ods_hr_collection_target -- 目标值收集 + FROM ods_hr_collection_target_organ -- 目标值收集 WHERE ym = '${p_ym}' )C - ON A.pq = C.organ_code - + ON B.organ_code = C.organ_code WHERE 1 = 1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} ${IF(LEN(p_area) > 0,"", "*/")} @@ -2506,15 +2218,18 @@ FROM ( SELECT LEFT(rq,7) AS ny - ,zzrs -- 当天在职人数 - ,zlzrs -- 当天总离职人数 + ,(SUM(CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END) + + SUM(CASE WHEN rq = LAST_DAY(CONCAT('${p_ym}','-01')) THEN zzrs ELSE 0 END)) / 2 + AS zzrs -- 当天在职人数 + ,SUM(zlzrs) AS zlzrs -- 当天总离职人数 FROM ods_hr_view_lzbl_d WHERE LEFT(rq,7) >= '2024-10' AND pq not in('89','267') -- 排除了佳美、悦汇 + group by LEFT(rq,7) UNION ALL SELECT T1.ym AS ny - ,SUM(T1.begin_num) AS zzrs + ,(SUM(T1.begin_num) + SUM(T1.end_num)) / 2 AS zzrs ,SUM(T1.active_quit) + SUM(T1.pass_quit ) AS zlzrs FROM ( @@ -2527,6 +2242,7 @@ FROM ,COALESCE(jan_active_quit,0) AS active_quit -- 主动离职人数 ,COALESCE(jan_pass_quit,0) AS pass_quit -- 被动离职人数 ,COALESCE(sep_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT @@ -2538,6 +2254,8 @@ FROM ,COALESCE(feb_active_quit,0) AS active_quit -- 主动离职人数 ,COALESCE(feb_pass_quit,0) AS pass_quit -- 被动离职人数 ,COALESCE(sep_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 + FROM ods_hr_history_erp_date UNION ALL SELECT @@ -2549,6 +2267,7 @@ FROM ,COALESCE(mar_active_quit,0) AS active_quit -- 主动离职人数 ,COALESCE(mar_pass_quit,0) AS pass_quit -- 被动离职人数 ,COALESCE(sep_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT @@ -2561,6 +2280,7 @@ FROM ,COALESCE(apr_active_quit,0) AS active_quit -- 主动离职人数 ,COALESCE(apr_pass_quit,0) AS pass_quit -- 被动离职人数 ,COALESCE(sep_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT @@ -2573,6 +2293,7 @@ FROM ,COALESCE(may_active_quit,0) AS active_quit -- 主动离职人数 ,COALESCE(may_pass_quit,0) AS pass_quit -- 被动离职人数 ,COALESCE(sep_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT @@ -2584,6 +2305,7 @@ FROM ,COALESCE(jun_active_quit,0) AS active_quit -- 主动离职人数 ,COALESCE(jun_pass_quit,0) AS pass_quit -- 被动离职人数 ,COALESCE(sep_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT @@ -2595,6 +2317,7 @@ FROM ,COALESCE(jul_active_quit,0) AS active_quit -- 主动离职人数 ,COALESCE(jul_pass_quit,0) AS pass_quit -- 被动离职人数 ,COALESCE(sep_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT @@ -2606,6 +2329,7 @@ FROM ,COALESCE(aug_active_quit,0) AS active_quit -- 主动离职人数 ,COALESCE(aug_pass_quit,0) AS pass_quit -- 被动离职人数 ,COALESCE(sep_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT @@ -2617,12 +2341,12 @@ FROM ,COALESCE(sep_active_quit,0) AS active_quit -- 主动离职人数 ,COALESCE(sep_pass_quit,0) AS pass_quit -- 被动离职人数 ,COALESCE(sep_begin_num,0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_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}' + WHERE A1.ny = '${p_ym}' )A UNION ALL SELECT @@ -2657,7 +2381,9 @@ FROM SELECT LEFT(rq, 7) AS ny , pq -- 片区 - , SUM(zzrs) AS zzrs-- 当天在职人数 + ,(SUM(CASE WHEN rq = CONCAT('${p_ym}','-01') THEN zzrs ELSE 0 END) + + SUM(CASE WHEN rq = LAST_DAY(CONCAT('${p_ym}','-01')) THEN zzrs ELSE 0 END)) / 2 + AS zzrs -- 当天在职人数 , SUM(zlzrs) AS zlzrs -- 当天总离职人数 FROM ods_hr_view_lzbl_d WHERE LEFT(rq, 7) >= '2024-10' @@ -2670,7 +2396,7 @@ FROM UNION ALL SELECT T1.ym AS ny , T1.organ_code AS pq - , SUM(T1.begin_num) AS zzrs + ,(SUM(T1.begin_num) + SUM(T1.end_num)) / 2 AS zzrs , SUM(T1.active_quit) + SUM(T1.pass_quit) AS zlzrs FROM (SELECT organ_code , organ_name @@ -2680,6 +2406,7 @@ FROM , COALESCE(jan_active_quit, 0) AS active_quit -- 主动离职人数 , COALESCE(jan_pass_quit, 0) AS pass_quit -- 被动离职人数 , COALESCE(sep_begin_num, 0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT organ_code @@ -2690,6 +2417,7 @@ FROM , COALESCE(feb_active_quit, 0) AS active_quit -- 主动离职人数 , COALESCE(feb_pass_quit, 0) AS pass_quit -- 被动离职人数 , COALESCE(sep_begin_num, 0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT organ_code @@ -2700,6 +2428,7 @@ FROM , COALESCE(mar_active_quit, 0) AS active_quit -- 主动离职人数 , COALESCE(mar_pass_quit, 0) AS pass_quit -- 被动离职人数 , COALESCE(sep_begin_num, 0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT organ_code @@ -2711,6 +2440,7 @@ FROM , COALESCE(apr_active_quit, 0) AS active_quit -- 主动离职人数 , COALESCE(apr_pass_quit, 0) AS pass_quit -- 被动离职人数 , COALESCE(sep_begin_num, 0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT organ_code @@ -2722,6 +2452,7 @@ FROM , COALESCE(may_active_quit, 0) AS active_quit -- 主动离职人数 , COALESCE(may_pass_quit, 0) AS pass_quit -- 被动离职人数 , COALESCE(sep_begin_num, 0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT organ_code @@ -2732,6 +2463,7 @@ FROM , COALESCE(jun_active_quit, 0) AS active_quit -- 主动离职人数 , COALESCE(jun_pass_quit, 0) AS pass_quit -- 被动离职人数 , COALESCE(sep_begin_num, 0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT organ_code @@ -2742,6 +2474,7 @@ FROM , COALESCE(jul_active_quit, 0) AS active_quit -- 主动离职人数 , COALESCE(jul_pass_quit, 0) AS pass_quit -- 被动离职人数 , COALESCE(sep_begin_num, 0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT organ_code @@ -2752,6 +2485,7 @@ FROM , COALESCE(aug_active_quit, 0) AS active_quit -- 主动离职人数 , COALESCE(aug_pass_quit, 0) AS pass_quit -- 被动离职人数 , COALESCE(sep_begin_num, 0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 FROM ods_hr_history_erp_date UNION ALL SELECT organ_code @@ -2762,11 +2496,11 @@ FROM , COALESCE(sep_active_quit, 0) AS active_quit -- 主动离职人数 , COALESCE(sep_pass_quit, 0) AS pass_quit -- 被动离职人数 , COALESCE(sep_begin_num, 0) AS begin_num -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_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}' + WHERE A1.ny = '${p_ym}' )A LEFT JOIN ( @@ -2799,7 +2533,7 @@ LEFT JOIN FROM ods_hr_collection_target_organ WHERE ym = '${p_ym}' )C - ON a.pq = c.organ_code + ON B.organ_code = C.organ_code where 1 = 1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} diff --git a/finereport/kanban/pc/总裁.sql b/finereport/kanban/pc/总裁.sql index 70c79d5..805f3f3 100644 --- a/finereport/kanban/pc/总裁.sql +++ b/finereport/kanban/pc/总裁.sql @@ -245,4 +245,636 @@ FROM ${if(len(organ)=0,"","and c.organ_code = '"+organ+"'")} )T -; \ No newline at end of file +; + + + + +-- ====================================== +-- 在职人数 +-- ====================================== + +SELECT + SUM(zzs) AS SL +FROM +( + SELECT + A1.pq + ,SUM(A1.zzs) as zzs + FROM + ( + SELECT + pq -- 片区 + ,ny AS ym + ,zzs -- 在职人数 + FROM ods_hr_view_mbl_d -- + WHERE pq NOT IN ('89','267') -- 这里剔除了佳美物业公司/悦汇发展公司 + and ny > '2024-10' + -- 新增历史数据 + UNION ALL + SELECT + organ_code as pq + ,concat(left(ym,4),'-',right(ym,2)) as ym + ,SUM(zzs) AS zzs + -- ,SUM(bzs) AS bzs + FROM ods_hr_history_bz_num + WHERE 1 = 1 + GROUP BY organ_code,concat(left(ym,4),'-',right(ym,2)) + )A1 + WHERE A1.ym = DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m') + GROUP BY A1.pq + )A + LEFT JOIN + ( + SELECT + organ_code + ,organ_name + ,hr_organ_id + -- ,hr_organ_name + -- ,hr_comm_id + -- ,hr_comm_name + -- ,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 + -- ,comm_name + UNION ALL + SELECT + '0000' AS organ_code -- erp片区编码 + ,'' AS organ_name -- erp片区名称 + ,'153' AS hr_organ_id -- hr片区编码 + )B + ON A.pq = B.hr_organ_id +where 1 = 1 +${IF(LEN(organ)>0," AND B.organ_code = '"+ organ +"'", "")} + + +-- ====================================== +-- 满编率 +-- ====================================== + + + +-- 整体 +${IF(LEN(organ) = 0,"", "/*")} +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 -- 目标占比 +FROM +( +SELECT +CASE WHEN SUM(bzs) = 0 THEN 0 ELSE SUM(zzs) / SUM(bzs) END AS full_rate -- 满编率 +,0 AS full_rate_target -- 满编率目标值 +FROM +( + SELECT + SUM(A1.bzs) AS bzs + ,SUM(A1.zzs) AS zzs + FROM + ( + SELECT + ny + ,zzs -- 在职数 + ,bzs -- 编制数 + FROM ods_hr_view_mbl_d + WHERE pq NOT IN ('89', '267') -- 排除了佳美、悦汇 + AND ny > '2024-10' + UNION ALL + SELECT + concat(left(ym,4),'-',right(ym,2)) as ny + ,SUM(zzs) AS zzs + ,SUM(bzs) AS bzs + FROM ods_hr_history_bz_num + WHERE 1 = 1 + GROUP BY ym + )A1 + WHERE A1.ny = DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m') +)A +UNION ALL +SELECT +0 AS full_rate -- 满编率 +,full_rate_target -- 满编率目标 +FROM ods_hr_collection_target_overall +WHERE ym = DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m') +)T + + + + ${IF(LEN(organ) = 0,"", "*/")} + +-- 片区 + ${IF(LEN(organ) > 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 + ,SUM(A1.zzs) AS zzs + ,sum(A1.bzs) AS bzs + FROM + ( + SELECT + pq -- 片区 + ,ny + ,SUM(zzs) AS zzs -- 在职数 + ,SUM(bzs) AS bzs -- 编制数 + FROM ods_hr_view_mbl_d + WHERE pq not in('89','267') -- 排除了佳美、悦汇 + and ny > '2024-10' + GROUP BY pq,ny + UNION ALL + SELECT + organ_code as pq + ,concat(left(ym,4),'-',right(ym,2)) as ny + ,SUM(zzs) AS zzs + ,SUM(bzs) AS bzs + FROM ods_hr_history_bz_num + WHERE 1 = 1 + GROUP BY ym,organ_code + )A1 + WHERE A1.ny = DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m') + group by A1.ny,A1.pq +)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_organ -- 目标值收集 + WHERE ym = DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m') + )C + ON B.organ_code = C.organ_code +WHERE 1 = 1 +${IF(LEN(organ)>0," AND B.organ_code = '"+ organ +"'", "")} +${IF(LEN(organ) > 0,"", "*/")} + + + +-- ====================================== +-- 离职率/目标值 +-- ====================================== + + +-- 整体 +${IF(LEN(organ) = 0,"", "/*")} + +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 -- 离职率目标 +FROM +( + SELECT + SUM(A1.zzrs) AS zzrs + ,SUM(A1.zlzrs) AS zlzrs + FROM + ( + SELECT + LEFT(rq,7) AS ny + ,(SUM(CASE WHEN rq = CONCAT(DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m'),'-01') THEN zzrs ELSE 0 END) + + SUM(CASE WHEN rq = LAST_DAY(CONCAT(DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m'),'-01')) THEN zzrs ELSE 0 END)) / 2 + AS zzrs -- 当天在职人数 + ,SUM(zlzrs) AS zlzrs -- 当天总离职人数 + FROM ods_hr_view_lzbl_d + WHERE LEFT(rq,7) >= '2024-10' + AND pq not in('89','267') -- 排除了佳美、悦汇 + group by LEFT(rq,7) + UNION ALL + SELECT + T1.ym AS ny + ,(SUM(T1.begin_num) + SUM(T1.end_num)) / 2 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 -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_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 -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_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 -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_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 -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_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 -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_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 -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_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 -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_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 -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_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 -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 + FROM ods_hr_history_erp_date + )T1 + GROUP BY T1.ym + )A1 + WHERE A1.ny = DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m') +)A +UNION ALL +SELECT +0 AS lz_rate +,lz_rate_target -- 离职率目标 +FROM ods_hr_collection_target_overall +WHERE ym = DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m') +)T + + +${IF(LEN(organ) = 0,"", "*/")} + +-- 片区 +${IF(LEN(organ) > 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(CASE WHEN rq = CONCAT( DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m'),'-01') THEN zzrs ELSE 0 END) + + SUM(CASE WHEN rq = LAST_DAY(CONCAT(DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m'),'-01')) THEN zzrs ELSE 0 END)) / 2 + 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) + SUM(T1.end_num)) / 2 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 -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_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 -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_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 -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_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 -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_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 -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_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 -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_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 -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_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 -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_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 -- 月初在职 + ,COALESCE(jan_end_num,0) AS end_num -- 月末在职 + FROM ods_hr_history_erp_date) T1 + GROUP BY T1.ym, T1.organ_code + )A1 + WHERE A1.ny = DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m') + )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 + ,lz_rate_target + FROM ods_hr_collection_target_organ + WHERE ym = DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m') + )C + ON B.organ_code = C.organ_code +where 1 = 1 +${IF(LEN(organ)>0," AND B.organ_code = '"+ organ +"'", "")} + +${IF(LEN(organ) > 0,"", "*/")} + + + +-- ====================================== +-- 人力成本费率 +-- ====================================== + + + +-- 整体 +${IF(LEN(organ)=0,"", "/*")} + +SELECT +SUM(T.lc_fee_rate) AS lc_fee_rate -- 人力成本费率 +,SUM(T.lc_fee_rate_target) AS lc_fee_rate_target -- 人力成本费率目标 +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 yr_month = DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m') AND organ_name <> '佳美物业') AS lc_fee_rate -- 人力成本费率 +,0 AS lc_fee_rate_target -- 人力成本费率 +from dw.ods_cost_collection_lc_ac +WHERE left(ym,4) = left(DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m'),4) + AND ym <= DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m') +UNION ALL +SELECT +0 AS lc_fee_rate +,lc_fee_rate_target -- 人力成本费率 +FROM ods_hr_collection_target_overall +WHERE ym = DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m') +)T +${IF(LEN(organ)=0,"", "*/")} + +-- 片区 +${IF(LEN(organ)>0,"", "/*")} +SELECT +T.lc_fee_rate AS lc_fee_rate -- 人力成本费率 +,T.lc_fee_rate_target AS lc_fee_rate_target -- 人力成本费率目标 +FROM +( +SELECT +A.lc_total_fee / B.index_income_fact AS lc_fee_rate +,C.lc_fee_rate_target AS lc_fee_rate_target -- 人力成本费率 +FROM +( + -- 费控人力行政成本填报 + SELECT + organ_code + ,coalesce(SUM(CASE WHEN cost_type = '人力成本' THEN actual_amount ELSE 0 END),0) AS lc_total_fee -- 人力成本费用 + from dw.ods_cost_collection_lc_ac + WHERE left(ym,4) = left(DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m'),4) + AND ym <= DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m') + GROUP BY organ_code +)A + LEFT JOIN + (-- 公司实际收入 + SELECT + organ_code + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month = DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m') + 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 = DATE_FORMAT(CURDATE() - INTERVAL 1 MONTH, '%Y-%m') + )C + ON A.organ_code = C.organ_code + WHERE 1 = 1 + ${IF(LEN(organ)>0," AND A.organ_code = '"+ organ +"'", "")} + )T +${IF(LEN(organ)>0,"", "*/")} diff --git a/finereport/xiazuan/2_operation/住服比异常项目.sql b/finereport/xiazuan/2_operation/住服比异常项目.sql index 0d5f765..d7a1655 100644 --- a/finereport/xiazuan/2_operation/住服比异常项目.sql +++ b/finereport/xiazuan/2_operation/住服比异常项目.sql @@ -1,13 +1,12 @@ --- **************************************** --- 创建人员: 杨坤安 --- 创建日期: 2024-07-22 --- 功 能: 帆软明细报表-住服比异常项目 --- 目 录: xianzuan>2_运营>住服比异常项目.fvs --- **************************************** - --- 【数据集: report_住服比】 - - +with one_to_many AS( +SELECT +a.username AS username -- 用户名 +,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 +FROM ods_one_to_many_perm a +JOIN mysql.help_topic b +on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) +WHERE a.username = '${fine_username}' +) select ${if(len(p_area) == 0,"organ_name","comm_name")} as p_area -- 片区/项目 -- organ_name -- 片区名称 @@ -20,14 +19,11 @@ select end as occupancy_rate -- 入住率 from dws_operation_room_park_info_d where 1=1 - ${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} +${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} +-- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END + group by -${if(len(p_area) == 0,"organ_name","comm_name")} - - --- 【筛选框数据集: dic_erp片区】 - -SELECT DISTINCT - organ_code AS 片区id, - organ_name AS 片区名称 -FROM dim_organ_mapping \ No newline at end of file +${if(len(p_area) == 0,"organ_name","comm_name")} \ No newline at end of file diff --git a/finereport/xiazuan/5_manpower/2_员工满编率明细.sql b/finereport/xiazuan/5_manpower/2_员工满编率明细.sql index 1a6c017..efd0f42 100644 --- a/finereport/xiazuan/5_manpower/2_员工满编率明细.sql +++ b/finereport/xiazuan/5_manpower/2_员工满编率明细.sql @@ -1,12 +1,95 @@ +-- 片区 + + +${if(len(p_area)=0,"", "/*")} SELECT - B.hr_comm_name AS hr_comm_name -- 片区 - ,B.hr_organ_name AS hr_organ_name -- 项目 - ,SUM(A.bzs) AS bzs -- 编制数 - ,SUM(A.zzs) AS zzs -- 在职数 - ,SUM(C.full_rate_target) AS full_rate_target -- 满编率目标值 - ,SUM(C.avg_full_rate_target) AS avg_full_rate_target -- 月均满编率目标值 - ,CASE WHEN SUM(bzs) = 0 THEN 0 ELSE SUM(zzs) / SUM(bzs) END AS RATE -- 月均满编率 + B.hr_organ_name AS comm_organ_name -- 片区 + ,SUM(IFNULL(A.bzs,0)) AS bzs -- 编制数 + ,SUM(IFNULL(A.zzs,0)) AS zzs -- 在职数 + ,SUM(IFNULL(C.full_rate_target,0)) AS full_rate_target -- 满编率目标值 + ,SUM(IFNULL(C.avg_full_rate_target,0)) AS avg_full_rate_target -- 月均满编率目标值 + ,CASE WHEN SUM(IFNULL(A.bzs,0)) = 0 THEN 0 ELSE SUM(IFNULL(A.zzs,0)) / SUM(IFNULL(A.bzs,0)) END AS RATE -- 月均满编率 +FROM +( + SELECT + A1.pq AS pq + ,SUM(A1.zzs) AS zzs + ,sum(A1.bzs) AS bzs + FROM + ( + SELECT + pq -- 片区 + ,ny + ,SUM(zzs) AS zzs -- 在职数 + ,SUM(bzs) AS bzs -- 编制数 + FROM ods_hr_view_mbl_d + WHERE pq NOT IN ('89','267') -- 这里剔除了佳美物业公司/悦汇发展公司 + and ny > '2024-10' + GROUP BY pq,ny + UNION ALL + SELECT + organ_code as pq + ,concat(left(ym,4),'-',right(ym,2)) as ny + ,SUM(zzs) AS zzs + ,SUM(bzs) AS bzs + FROM ods_hr_history_bz_num + WHERE 1 = 1 + GROUP BY organ_code,concat(left(ym,4),'-',right(ym,2)) + )A1 + WHERE A1.ny >= '${p_startym}' + AND A1.ny <= '${p_ym}' + group by A1.pq +)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_comm_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片区名称 + FROM dual +)B +ON A.pq = B.hr_organ_id +LEFT JOIN +( + SELECT + organ_code + ,full_rate_target -- 满编率目标 + ,avg_full_rate_target -- 月均满编率目标 + FROM ods_hr_collection_target_organ + WHERE ym = '${p_ym}' +)C +ON B.organ_code = C.organ_code +GROUP BY + B.hr_organ_name + +${if(len(p_area)=0,"", "*/")} + + +-- 项目 +${if(len(p_area)>0,"", "/*")} +SELECT + B.hr_comm_name AS comm_organ_name -- 片区 + ,SUM(IFNULL(A.bzs,0)) AS bzs -- 编制数 + ,SUM(IFNULL(A.zzs,0)) AS zzs -- 在职数 + ,SUM(IFNULL(C.full_rate_target,0)) AS full_rate_target -- 满编率目标值 + ,SUM(IFNULL(C.avg_full_rate_target,0)) AS avg_full_rate_target -- 月均满编率目标值 + ,CASE WHEN SUM(IFNULL(A.bzs,0)) = 0 THEN 0 ELSE SUM(IFNULL(A.zzs,0)) / SUM(IFNULL(A.bzs,0)) END AS RATE -- 月均满编率 FROM ( SELECT @@ -172,4 +255,29 @@ WHERE 1=1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('" + p_area +"')", "")} GROUP BY B.hr_comm_name -,B.hr_organ_name \ No newline at end of file + +${if(len(p_area)>0,"", "*/")} + + +-- ====================================== +-- 编制历史数据 +-- ====================================== + +DROP TABLE ods_hr_history_bz_num; + +CREATE TABLE ods_hr_history_bz_num ( + organ_name varchar(100) COMMENT 'erp片区名称' +,organ_code varchar(100) COMMENT 'erp片区编码' +,bzs bigint COMMENT '编制数' +,ym varchar(50) COMMENT '年月' +,zzs bigint COMMENT '在职数' +) COMMENT='编制人数历史数据'; + + +select * from ods_hr_history_bz_num + + +SELECT +full_rate_target -- 满编率目标 +FROM ods_hr_collection_target_overall +WHERE ym = '${p_ym}' diff --git a/finereport/xiazuan/5_manpower/3_员工离职率明细.sql b/finereport/xiazuan/5_manpower/3_员工离职率明细.sql index 23281d3..5ee6c93 100644 --- a/finereport/xiazuan/5_manpower/3_员工离职率明细.sql +++ b/finereport/xiazuan/5_manpower/3_员工离职率明细.sql @@ -12,7 +12,7 @@ FROM ( SELECT pq, xm, ym, StartOfmonth_zzrs, EndOfmonth_zsrs, zdlzrs, bdlzrs, zlzrs -,(StartOfmonth_zzrs + EndOfmonth_zsrs) / 2 AS zzrs +,(StartOfmonth_zzrs + EndOfmonth_zsrs) / 2 AS zzrs FROM ( SELECT @@ -25,6 +25,7 @@ FROM ,SUM(bdlzrs) AS bdlzrs -- 当天被动离职人数 ,SUM(zlzrs) AS zlzrs -- 当天总离职人数 FROM ods_hr_view_lzbl_d + WHERE LEFT(rq, 7) >= '2024-10' -- 排除了: -- 89:佳美物业公司 -- 267:悦汇发展公司 diff --git a/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql b/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql index bd06930..d315f26 100644 --- a/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql +++ b/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql @@ -147,28 +147,24 @@ FROM -- ====================================== -${if(p_type='人力',"","/*")} - - - SELECT - A.organ_name AS organ_name -- 片区 - ,A.comm_name AS comm_name -- 项目 - ,SUM(D.lc_fee_rate_target) AS lc_fee_rate_target -- 人力费率年度目标值 - ,SUM(B.index_market_target) AS index_market_target-- 收入累计目标值 - ,SUM(A.lc_target_fee) AS lc_target_fee -- 人力成本累计目标值 - ,SUM(C.lc_fee_rate_target) AS lc_fee_rate_target -- 人力成本费率目标值 - ,SUM(B.index_income_fact) AS index_income_fact -- 实际收入累计值 - ,SUM(A.lc_total_fee) AS lc_total_fee -- 人力成本累计实际 - ,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 -- 费率实际值 +-- 片区-人力 +${if(and(len(p_area)=0,p_type='人力'),"", "/*")} +SELECT + A.organ_name AS organ_comm -- 片区 + ,0 AS year_fee_rate_target -- 人力费率年度目标值 + ,SUM(ifnull(B.index_market_target,0)) AS index_market_target-- 收入累计目标值 + ,SUM(ifnull(A.lc_target_fee,0)) AS target_fee -- 人力成本累计目标值 + ,SUM(ifnull(C.lc_fee_rate_target,0)) AS fee_rate_target -- 人力成本费率目标值 + ,SUM(ifnull(B.index_income_fact,0)) AS index_income_fact -- 实际收入累计值 + ,SUM(ifnull(A.lc_total_fee,0)) AS total_fee -- 人力成本累计实际 + ,CASE WHEN sum(ifnull(B.index_income_fact,0)) = 0 THEN 0 + ELSE SUM(A.lc_total_fee) / SUM(B.index_income_fact) END AS fee_rate -- 费率实际值 FROM ( -- 费控人力行政成本填报 SELECT - organ_code -- 片区id - ,organ_name -- 片区名称 - ,comm_id -- 项目id - ,comm_name -- 项目名称 + organ_code -- ERP片区id + ,organ_name -- erp 片区名称 ,coalesce(SUM(CASE WHEN cost_type = '人力成本' THEN actual_amount ELSE 0 END),0) AS lc_total_fee -- 人力成本费用 ,coalesce(SUM(CASE WHEN cost_type = '人力成本' THEN budget_amount ELSE 0 END),0) AS lc_target_fee -- 人力成本预算费用 ,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END),0) AS ac_total_fee -- 行政成本费用 @@ -176,7 +172,224 @@ ${if(p_type='人力',"","/*")} from dw.ods_cost_collection_lc_ac WHERE ym >= '${p_startym}' AND ym <= '${p_ym}' - GROUP BY organ_code, organ_name, comm_id, comm_name + GROUP BY organ_code, organ_name + )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片区名称 + )A1 + ON A.organ_code = A1.organ_code + LEFT JOIN + (-- 公司实际收入 + SELECT + organ_code + ,SUM(index_market_target) AS index_market_target + ,SUM(index_income_fact) AS index_income_fact + FROM + ( + SELECT + organ_code + ,SUM(index_market_target) AS index_market_target -- 收入目标值 + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND organ_code not in('5503','5501') + AND yr_month >= '${p_ym}' + AND yr_month <= '${p_startym}' + GROUP BY + organ_code + UNION ALL + SELECT + '0108' AS organ_code + ,SUM(index_market_target) AS index_market_target -- 收入目标值 + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month >= '${p_ym}' + AND yr_month <= '${p_startym}' + AND organ_code in('5503','5501') -- 集团办公区、集团总部片区归到商写片区 + )t + group by organ_code + )B + ON A1.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 + -- LEFT JOIN + -- (-- 费控年度目标值 + -- SELECT + -- organ_code + -- ,lc_fee_rate_target -- 人力成本费率目标 + -- ,ac_fee_rate_target -- 行政成本费率目标 + -- FROM ods_hr_collection_target_organ + -- WHERE ym = '${p_ym}' + -- )D + -- ON A.organ_code = D.organ_code + GROUP BY A.organ_name + + +${if(and(len(p_area)=0,p_type='人力'),"", "*/")} + + +${if(and(len(p_area)=0,p_type='行政'),"", "/*")} + +SELECT + A.organ_name AS organ_comm -- 片区 + ,0 AS year_fee_rate_target -- 行政费率年度目标值 + ,SUM(ifnull(B.index_market_target,0)) AS index_market_target-- 收入累计目标值 + ,SUM(ifnull(A.ac_target_fee,0)) AS target_fee -- 行政成本累计目标值 + ,SUM(ifnull(C.ac_fee_rate_target,0)) AS fee_rate_target -- 行政成本费率目标值 + ,SUM(ifnull(B.index_income_fact,0)) AS index_income_fact -- 实际收入累计值 + ,SUM(ifnull(A.ac_total_fee,0)) AS total_fee -- 行政成本累计实际 + ,CASE WHEN sum(ifnull(B.index_income_fact,0)) = 0 THEN 0 + ELSE SUM(A.ac_total_fee) / SUM(B.index_income_fact) END AS fee_rate -- 费率实际值 + + FROM + ( -- 费控人力行政成本填报 + SELECT + organ_code -- ERP片区id + ,organ_name -- erp 片区名称 + ,coalesce(SUM(CASE WHEN cost_type = '人力成本' THEN actual_amount ELSE 0 END),0) AS lc_total_fee -- 人力成本费用 + ,coalesce(SUM(CASE WHEN cost_type = '人力成本' THEN budget_amount ELSE 0 END),0) AS lc_target_fee -- 人力成本预算费用 + ,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END),0) AS ac_total_fee -- 行政成本费用 + ,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN budget_amount ELSE 0 END),0) AS ac_target_fee -- 行政成本预算费用 + from dw.ods_cost_collection_lc_ac + WHERE ym >= '${p_startym}' + AND ym <= '${p_ym}' + GROUP BY organ_code, organ_name + )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片区名称 + )A1 + ON A.organ_code = A1.organ_code + LEFT JOIN + (-- 公司实际收入 + SELECT + organ_code + ,SUM(index_market_target) AS index_market_target + ,SUM(index_income_fact) AS index_income_fact + FROM + ( + SELECT + organ_code + ,SUM(index_market_target) AS index_market_target -- 收入目标值 + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND organ_code not in('5503','5501') + AND yr_month >= '${p_ym}' + AND yr_month <= '${p_startym}' + GROUP BY + organ_code + UNION ALL + SELECT + '0108' AS organ_code + ,SUM(index_market_target) AS index_market_target -- 收入目标值 + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month >= '${p_ym}' + AND yr_month <= '${p_startym}' + AND organ_code in('5503','5501') -- 集团办公区、集团总部片区归到商写片区 + )t + group by organ_code + )B + ON A1.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 + -- LEFT JOIN + -- (-- 费控年度目标值 + -- SELECT + -- organ_code + -- ,lc_fee_rate_target -- 人力成本费率目标 + -- ,ac_fee_rate_target -- 行政成本费率目标 + -- FROM ods_hr_collection_target_organ + -- WHERE ym = '${p_ym}' + -- )D + -- ON A.organ_code = D.organ_code + GROUP BY A.organ_name +${if(and(len(p_area)=0,p_type='行政')," -- 片区排名开始", "*/")} + + +${if(and(len(p_area)>0,p_type='人力'),"", "/*")} + +SELECT + A1.hr_comm_name AS organ_comm -- 片区 + ,SUM(C.lc_fee_rate_target) AS year_fee_rate_target -- 人力费率年度目标值 + ,SUM(ifnull(B.index_market_target,0)) AS index_market_target-- 收入累计目标值 + ,SUM(ifnull(A.lc_target_fee,0)) AS target_fee -- 人力成本累计目标值 + ,SUM(ifnull(C.lc_fee_rate_target,0)) AS fee_rate_target -- 人力成本费率目标值 + ,SUM(ifnull(B.index_income_fact,0)) AS index_income_fact -- 实际收入累计值 + ,SUM(ifnull(A.lc_total_fee,0)) AS total_fee -- 人力成本累计实际 + ,CASE WHEN sum(ifnull(B.index_income_fact,0)) = 0 THEN 0 + ELSE SUM(A.lc_total_fee) / SUM(B.index_income_fact) END AS fee_rate -- 费率实际值 + + FROM + ( -- 费控人力行政成本填报 + SELECT + organ_code -- ERP片区id + ,organ_name -- erp 片区名称 + ,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 budget_amount ELSE 0 END),0) AS lc_target_fee -- 人力成本预算费用 + ,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END),0) AS ac_total_fee -- 行政成本费用 + ,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN budget_amount ELSE 0 END),0) AS ac_target_fee -- 行政成本预算费用 + from dw.ods_cost_collection_lc_ac + WHERE ym >= '${p_startym}' + AND ym <= '${p_ym}' + GROUP BY organ_code, organ_name,comm_id,comm_name )A LEFT JOIN ( @@ -184,7 +397,6 @@ ${if(p_type='人力',"","/*")} organ_code ,organ_name ,comm_id - ,comm_name ,hr_organ_id ,hr_organ_name ,hr_comm_id @@ -192,40 +404,59 @@ ${if(p_type='人力',"","/*")} FROM dim_organ_mapping WHERE length(hr_comm_id) > 0 GROUP BY - organ_code - ,organ_name - ,comm_id - ,comm_name - ,hr_organ_id - ,hr_organ_name - ,hr_comm_id - ,hr_comm_name + organ_code + ,organ_name + ,comm_id + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name UNION ALL SELECT - '0000' AS organ_code -- erp片区编码 - ,'' AS organ_name -- erp片区名称 - ,'' AS comm_id - ,'' AS comm_name - ,'153' AS hr_organ_id -- hr片区编码 - ,'领悦集团总部' AS hr_organ_name -- hr片区名称 - ,'153' AS hr_comm_id -- hr项目id - ,'领悦集团总部' AS hr_comm_name -- hr项目名称 + '0000' AS organ_code -- erp片区编码 + ,'' AS organ_name -- erp片区名称 + ,'' AS comm_id + ,'153' AS hr_organ_id -- hr片区编码 + ,'领悦集团总部' AS hr_organ_name -- hr片区名称 + ,'153' AS hr_comm_id + ,'领悦集团总部' AS hr_comm_name )A1 ON A.organ_code = A1.organ_code - and A.comm_id = A1.hr_comm_id + AND A.comm_id = A1.hr_comm_id LEFT JOIN (-- 公司实际收入 + SELECT + organ_code + ,comm_id + ,sum(index_market_target) as index_market_target + ,sum(index_income_fact) as index_income_fact + FROM + ( SELECT organ_code - ,comm_id + ,comm_id ,SUM(index_market_target) AS index_market_target -- 收入目标值 ,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}' + AND organ_code not in('5503','5501') + AND yr_month >= '${p_ym}' + AND yr_month <= '${p_startym}' GROUP BY organ_code,comm_id + UNION ALL + SELECT + '0108' AS organ_code -- 商写片区 + ,'215' AS comm_id + ,SUM(index_market_target) AS index_market_target -- 收入目标值 + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month >= '${p_ym}' + AND yr_month <= '${p_startym}' + AND organ_code in('5503','5501') -- 集团办公区、集团总部片区归到商写片区 + )t + group by organ_code ,comm_id )B ON A1.organ_code = B.organ_code AND A1.comm_id = B.comm_id @@ -233,143 +464,181 @@ ${if(p_type='人力',"","/*")} (-- 费控月度目标值 SELECT organ_code - ,comm_id + ,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 + ON A1.organ_code = C.organ_code + AND A1.hr_comm_id = C.comm_id + LEFT JOIN + (-- 费控年度目标值 + SELECT + organ_code + ,comm_id + ,lc_fee_rate_target -- 人力成本费率目标 + ,ac_fee_rate_target -- 行政成本费率目标 + FROM ods_cost_collection_target + WHERE length(ym) = 4 + AND left(ym,4) = left('${p_startym}',4) + )D + ON A1.organ_code = D.organ_code + AND A1.hr_comm_id = D.comm_id + where 1 = 1 + ${IF(LEN(p_area)>0," AND A1.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + GROUP BY A1.hr_comm_name + + + ${if(and(len(p_area)>0,p_type='人力'),"", "*/")} + + + ${if(and(len(p_area)>0,p_type='行政'),"", "/*")} + + + +SELECT + A1.hr_comm_name AS organ_comm -- 片区 + ,SUM(C.ac_fee_rate_target) AS year_fee_rate_target -- 人力费率年度目标值 + ,SUM(ifnull(B.index_market_target,0)) AS index_market_target-- 收入累计目标值 + ,SUM(ifnull(A.ac_target_fee,0)) AS target_fee -- 人力成本累计目标值 + ,SUM(ifnull(C.ac_fee_rate_target,0)) AS fee_rate_target -- 人力成本费率目标值 + ,SUM(ifnull(B.index_income_fact,0)) AS index_income_fact -- 实际收入累计值 + ,SUM(ifnull(A.ac_total_fee,0)) AS total_fee -- 人力成本累计实际 + ,CASE WHEN sum(ifnull(B.index_income_fact,0)) = 0 THEN 0 + ELSE SUM(A.ac_total_fee) / SUM(B.index_income_fact) END AS fee_rate -- 费率实际值 + + FROM + ( -- 费控人力行政成本填报 + SELECT + organ_code -- ERP片区id + ,organ_name -- erp 片区名称 + ,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 budget_amount ELSE 0 END),0) AS lc_target_fee -- 人力成本预算费用 + ,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END),0) AS ac_total_fee -- 行政成本费用 + ,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN budget_amount ELSE 0 END),0) AS ac_target_fee -- 行政成本预算费用 + from dw.ods_cost_collection_lc_ac + WHERE ym >= '${p_startym}' + AND ym <= '${p_ym}' + GROUP BY organ_code, organ_name,comm_id,comm_name + )A LEFT JOIN - (-- 费控年度目标值 + ( SELECT organ_code + ,organ_name ,comm_id + ,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 + ,comm_id + ,hr_organ_id + ,hr_organ_name + ,hr_comm_id + ,hr_comm_name + UNION ALL + SELECT + '0000' AS organ_code -- erp片区编码 + ,'' AS organ_name -- erp片区名称 + ,'' AS comm_id + ,'153' AS hr_organ_id -- hr片区编码 + ,'领悦集团总部' AS hr_organ_name -- hr片区名称 + ,'153' AS hr_comm_id + ,'领悦集团总部' AS hr_comm_name + )A1 + ON A.organ_code = A1.organ_code + AND A.comm_id = A1.hr_comm_id + LEFT JOIN + (-- 公司实际收入 + SELECT + organ_code + ,comm_id + ,sum(index_market_target) as index_market_target + ,sum(index_income_fact) as index_income_fact + FROM + ( + SELECT + organ_code + ,comm_id + ,SUM(index_market_target) AS index_market_target -- 收入目标值 + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month >= '${p_ym}' + AND yr_month <= '${p_startym}' + AND organ_code not in('5503','5501') + GROUP BY + organ_code,comm_id + UNION ALL + SELECT + '0108' AS organ_code -- 商写片区 + ,'215' AS comm_id + ,SUM(index_market_target) AS index_market_target -- 收入目标值 + ,SUM(index_income_fact) AS index_income_fact -- 实际收入 + FROM ods_caiwu_feecollection + WHERE category = '物业' + AND yr_month >= '${p_ym}' + AND yr_month <= '${p_startym}' + AND organ_code in('5503','5501') -- 集团办公区、集团总部片区归到商写片区 + )t + group by organ_code ,comm_id + )B + ON A1.organ_code = B.organ_code + AND A1.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}' - )D - ON A.organ_code = D.organ_code - AND A.comm_id = D.comm_id - WHERE 1 = 1 - ${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} - GROUP BY A.organ_name - ,A.comm_name - -${if(p_type='人力',"","*/")} + )C + ON A1.organ_code = C.organ_code + AND A1.hr_comm_id = C.comm_id + LEFT JOIN + (-- 费控年度目标值 + SELECT + organ_code + ,comm_id + ,lc_fee_rate_target -- 人力成本费率目标 + ,ac_fee_rate_target -- 行政成本费率目标 + FROM ods_cost_collection_target + WHERE length(ym) = 4 + AND left(ym,4) = left('${p_startym}',4) + )D + ON A1.organ_code = D.organ_code + AND A1.hr_comm_id = D.comm_id + where 1 = 1 + ${IF(LEN(p_area)>0," AND A1.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + GROUP BY A1.hr_comm_name -${if(p_type='行政',"","/*")} +${if(and(len(p_area)>0,p_type='行政'),"", "*/")} + +${if(p_type='行政',"", "/*")} + SELECT - A.organ_name AS organ_name -- 片区 - ,A.comm_name AS comm_name -- 项目 - ,SUM(D.ac_fee_rate_target) AS lc_fee_rate_target -- 人力费率年度目标值 - ,SUM(B.index_market_target) AS index_market_target-- 收入累计目标值 - ,SUM(A.ac_target_fee) AS lc_target_fee -- 人力成本累计目标值 - ,SUM(C.ac_fee_rate_target) AS lc_fee_rate_target -- 人力成本费率目标值 - ,SUM(B.index_income_fact) AS index_income_fact -- 实际收入累计值 - ,SUM(A.ac_total_fee) AS lc_total_fee -- 人力成本累计实际 - ,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 -- 费率实际值 +ac_fee_rate_target as fee_rate_target -- 人力成本费率目标 +FROM ods_hr_collection_target_overall +WHERE ym = '${p_ym}' +${if(p_type='行政',"", "*/")} -FROM - ( -- 费控人力行政成本填报 - SELECT - organ_code -- 片区id - ,organ_name -- 片区名称 - ,comm_id -- 项目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 budget_amount ELSE 0 END),0) AS lc_target_fee -- 人力成本预算费用 - ,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN actual_amount ELSE 0 END),0) AS ac_total_fee -- 行政成本费用 - ,coalesce(SUM(CASE WHEN cost_type = '行政成本' THEN budget_amount ELSE 0 END),0) AS ac_target_fee -- 行政成本预算费用 - from dw.ods_cost_collection_lc_ac - WHERE ym >= '${p_startym}' - AND ym <= '${p_ym}' - GROUP BY organ_code, organ_name, comm_id, comm_name - )A - LEFT JOIN - ( - SELECT - organ_code - ,organ_name - ,comm_id - ,comm_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 - ,comm_id - ,comm_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片区名称 - ,'' AS comm_id - ,'' AS comm_name - ,'153' AS hr_organ_id -- hr片区编码 - ,'领悦集团总部' AS hr_organ_name -- hr片区名称 - ,'153' AS hr_comm_id -- hr项目id - ,'领悦集团总部' AS hr_comm_name -- hr项目名称 - )A1 - ON A.organ_code = A1.organ_code - and A.comm_id = A1.hr_comm_id - LEFT JOIN - (-- 公司实际收入 - SELECT - organ_code - ,comm_id - ,SUM(index_market_target) AS index_market_target -- 收入目标值 - ,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}' - GROUP BY - organ_code,comm_id - )B - ON A1.organ_code = B.organ_code - AND A1.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 - LEFT JOIN - (-- 费控年度目标值 - SELECT - organ_code - ,comm_id - ,lc_fee_rate_target -- 人力成本费率目标 - ,ac_fee_rate_target -- 行政成本费率目标 - FROM ods_cost_collection_target - WHERE ym = '${p_ym}' - )D - ON A.organ_code = D.organ_code - AND A.comm_id = D.comm_id -WHERE 1 = 1 - ${IF(LEN(p_area)>0," AND A.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} -GROUP BY A.organ_name - ,A.comm_name - ${if(p_type='行政',"","*/")} +${if(p_type='人力',"", "/*")} +SELECT +lc_fee_rate_target as fee_rate_target -- 行政成本费率目标 +FROM ods_hr_collection_target_overall +WHERE ym = '${p_ym}' +${if(p_type='人力',"", "*/")} \ No newline at end of file From a6c38d853af6dea2d6ab1b86721747dd045673ee Mon Sep 17 00:00:00 2001 From: yangkunan Date: Mon, 18 Nov 2024 18:47:17 +0800 Subject: [PATCH 88/89] =?UTF-8?q?=E4=BD=8F=E6=9C=8D=E6=AF=94=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E4=BA=BA=E5=8A=9B=E7=9B=B8=E5=85=B3=E6=8C=87=E6=A0=87?= =?UTF-8?q?+x=E8=BD=B4=E6=97=B6=E9=97=B4=E6=98=BE=E7=A4=BA=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- finereport/kanban/mobile/人力_mobile.sql | 2 + finereport/kanban/pc/人力.sql | 2 + .../xiazuan/2_operation/住服比异常项目.sql | 224 +++++++++++++++++- 3 files changed, 222 insertions(+), 6 deletions(-) diff --git a/finereport/kanban/mobile/人力_mobile.sql b/finereport/kanban/mobile/人力_mobile.sql index 88ca789..8806437 100644 --- a/finereport/kanban/mobile/人力_mobile.sql +++ b/finereport/kanban/mobile/人力_mobile.sql @@ -1820,6 +1820,7 @@ ${IF(LEN(p_area)>0,"", "*/")} ${if(p_type='人力',"","/*")} SELECT T1.yr_month AS yr_month + ,CONCAT(right(T1.yr_month,2),'月') as m ,'人力成本' AS name ,'人力成本费率' AS name_rate ,T1.lc_total_fee AS total_fee -- 人力成本 @@ -1915,6 +1916,7 @@ ${if(p_type='人力',"","*/")} ${if(p_type='行政',"","/*")} SELECT T1.yr_month AS yr_month + ,CONCAT(right(T1.yr_month,2),'月') as m ,'行政成本' AS name ,'行政成本费率' AS name_rate ,T1.ac_total_fee AS total_fee -- 行政成本 diff --git a/finereport/kanban/pc/人力.sql b/finereport/kanban/pc/人力.sql index cb47938..643b7a7 100644 --- a/finereport/kanban/pc/人力.sql +++ b/finereport/kanban/pc/人力.sql @@ -957,6 +957,7 @@ with one_to_many AS( ) SELECT T1.yr_month AS yr_month + ,CONCAT(right(T1.yr_month,2),'月') as m ,'人力成本' AS name ,'人力成本费率' AS name_rate ,T1.lc_total_fee AS total_fee -- 人力成本 @@ -1063,6 +1064,7 @@ with one_to_many AS( ) SELECT T1.yr_month AS yr_month + ,CONCAT(right(T1.yr_month,2),'月') as m ,'行政成本' AS name ,'行政成本费率' AS name_rate ,T1.ac_total_fee AS total_fee -- 行政成本 diff --git a/finereport/xiazuan/2_operation/住服比异常项目.sql b/finereport/xiazuan/2_operation/住服比异常项目.sql index d7a1655..f6087bf 100644 --- a/finereport/xiazuan/2_operation/住服比异常项目.sql +++ b/finereport/xiazuan/2_operation/住服比异常项目.sql @@ -1,3 +1,7 @@ +-- 片区 + + +${if(len(p_area) = 0,"","/*")} with one_to_many AS( SELECT a.username AS username -- 用户名 @@ -6,9 +10,187 @@ FROM ods_one_to_many_perm a JOIN mysql.help_topic b on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) WHERE a.username = '${fine_username}' +),hr_date AS +( + + +SELECT + B.organ_code AS organ_code +,B.organ_name AS organ_name +,SUM(A.bzs) AS bzs +,SUM(zzs) AS zzs -- 在职人数 +FROM +( + SELECT + A1.pq AS pq + ,SUM(A1.zzs) AS zzs + ,sum(A1.bzs) AS bzs + FROM + ( + SELECT + pq -- 片区 + ,ny + ,SUM(zzs) AS zzs -- 在职数 + ,SUM(bzs) AS bzs -- 编制数 + FROM ods_hr_view_mbl_d + WHERE pq not in('89','267') -- 排除了佳美、悦汇 + and ny > '2024-10' + GROUP BY pq,ny,xm + UNION ALL + SELECT + organ_code as pq + ,concat(left(ym,4),'-',right(ym,2)) as ny + ,SUM(zzs) AS zzs + ,SUM(bzs) AS bzs + FROM ods_hr_history_bz_num + WHERE 1 = 1 + GROUP BY ym,organ_code + )A1 + WHERE A1.ny = '${p_startdate}' + group by A1.pq +)A +RIGHT 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 +)B +ON A.pq = B.hr_organ_id +group by B.organ_code, B.organ_name + ) select - ${if(len(p_area) == 0,"organ_name","comm_name")} as p_area -- 片区/项目 + a.organ_name as p_area -- 片区/项目 + ,sum(room_num) as room_num -- 房间总数 【总户数】 + ,sum(check_ins_num) as check_ins_num -- 入住数 【入住户数】 + ,case when sum(check_ins_num) = 0 + then 0 + else sum(check_ins_num) / sum(room_num) + end as occupancy_rate -- 入住率 + ,SUM(IFNULL(b.zzs,0)) AS zzs -- 在职数 + ,SUM(ifnull(b.bzs,0)) AS bzs -- 编制数 + ,CASE WHEN SUM(b.bzs) = 0 THEN 0 ELSE SUM(b.zzs) / SUM(b.bzs) END AS full_rate -- 满编率 +from +( + SELECT + organ_code + ,organ_name + ,SUM(room_num) AS room_num + ,SUM(check_ins_num) AS check_ins_num + FROM dws_operation_room_park_info_d + WHERE 1 = 1 +-- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END + + group by + organ_code + ,organ_name +) a +left join hr_date b +on a.organ_code = b.organ_code + +group by +a.organ_name + +${if(len(p_area) = 0,"","*/")} + + +-- 项目 + +${if(len(p_area) > 0,"","/*")} +with one_to_many AS( +SELECT +a.username AS username -- 用户名 +,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 +FROM ods_one_to_many_perm a +JOIN mysql.help_topic b +on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) +WHERE a.username = '${fine_username}' +),hr_date AS +( + + +SELECT + B.organ_code AS organ_code +,B.organ_name AS organ_name +,B.comm_id AS comm_id +,B.comm_name AS comm_name +,SUM(A.bzs) AS bzs +,SUM(zzs) AS zzs -- 在职人数 +FROM +( + SELECT + A1.pq AS pq + ,A1.xm AS xm + ,SUM(A1.zzs) AS zzs + ,sum(A1.bzs) AS bzs + FROM + ( + SELECT + pq -- 片区 + ,ny + ,xm + ,SUM(zzs) 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 + -- organ_code as pq + -- ,concat(left(ym,4),'-',right(ym,2)) as ny + -- ,'' AS xm + -- ,SUM(zzs) AS zzs + -- ,SUM(bzs) AS bzs + -- FROM ods_hr_history_bz_num + -- WHERE 1 = 1 + -- GROUP BY ym,organ_code + )A1 + WHERE A1.ny = '${p_startdate}' + group by A1.pq,A1.xm +)A +RIGHT JOIN +( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,hr_organ_id -- hr片区编码 + ,hr_organ_name -- hr片区名称 + ,hr_comm_id -- hr项目id + ,hr_comm_name -- hr项目名称 + ,comm_id + ,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 + ,comm_id + ,comm_name +)B +ON A.pq = B.hr_organ_id +AND A.xm = B.hr_comm_id +group by B.organ_code, B.organ_name, B.comm_id, B.comm_name + +) +select + a.comm_name as p_area -- 片区/项目 -- organ_name -- 片区名称 -- ,comm_name -- 项目名称 ,sum(room_num) as room_num -- 房间总数 【总户数】 @@ -17,13 +199,43 @@ select then 0 else sum(check_ins_num) / sum(room_num) end as occupancy_rate -- 入住率 -from dws_operation_room_park_info_d -where 1=1 -${IF(LEN(p_area)!=0," and organ_code IN ('"+p_area+"')","")} + ,SUM(IFNULL(b.zzs,0)) AS zzs -- 在职数 + ,SUM(ifnull(b.bzs,0)) AS bzs -- 编制数 + ,CASE WHEN SUM(b.bzs) = 0 THEN 0 ELSE SUM(b.zzs) / SUM(b.bzs) END AS full_rate -- 满编率 +from +( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,SUM(room_num) AS room_num + ,SUM(check_ins_num) AS check_ins_num + FROM dws_operation_room_park_info_d + WHERE 1 = 1 -- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL - THEN comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + THEN comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END + group by + organ_code + ,organ_name + ,comm_id + ,comm_name +) a +left join hr_date b +on a.organ_code = b.organ_code +and a.comm_id = b.comm_id +where 1=1 +${IF(LEN(p_area)!=0," and a.organ_code IN ('"+p_area+"')","")} +-- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN a.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","a.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END + group by -${if(len(p_area) == 0,"organ_name","comm_name")} \ No newline at end of file +a.comm_name + + +${if(len(p_area) > 0,"","*/")} \ No newline at end of file From d0482904fe2ae2f49b3624acb0dc5e928f5d5144 Mon Sep 17 00:00:00 2001 From: yangkunan Date: Tue, 19 Nov 2024 11:33:02 +0800 Subject: [PATCH 89/89] =?UTF-8?q?=E4=BD=8F=E6=9C=8D=E6=AF=94=E5=BC=82?= =?UTF-8?q?=E5=B8=B8=E6=8C=87=E6=A0=87+=E6=98=8E=E7=BB=86=E8=A1=A8?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90=E6=8E=A7=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/codeStyles/Project.xml | 10 + .../xiazuan/2_operation/住服比异常项目.sql | 149 ++++++- .../xiazuan/5_manpower/2_员工满编率明细.sql | 29 ++ .../xiazuan/5_manpower/3_员工离职率明细.sql | 13 + .../5_manpower/4_人力行政成本费率明细.sql | 34 +- .../xiazuan/5_manpower/5_在职人员明细.sql | 408 +++++++++++------- 6 files changed, 487 insertions(+), 156 deletions(-) create mode 100644 .idea/codeStyles/Project.xml diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..e285616 --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,10 @@ + + + + + + + + \ No newline at end of file diff --git a/finereport/xiazuan/2_operation/住服比异常项目.sql b/finereport/xiazuan/2_operation/住服比异常项目.sql index f6087bf..2db5158 100644 --- a/finereport/xiazuan/2_operation/住服比异常项目.sql +++ b/finereport/xiazuan/2_operation/住服比异常项目.sql @@ -238,4 +238,151 @@ group by a.comm_name -${if(len(p_area) > 0,"","*/")} \ No newline at end of file +${if(len(p_area) > 0,"","*/")} + + + + +-- ====================================== +-- 住服比异常项目数 +-- ====================================== + + + + + +with one_to_many AS( +SELECT +a.username AS username -- 用户名 +,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 +FROM ods_one_to_many_perm a +JOIN mysql.help_topic b +on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) +WHERE a.username = '${fine_username}' +),hr_date AS +( + + +SELECT + B.organ_code AS organ_code +,B.organ_name AS organ_name +,B.comm_id AS comm_id +,B.comm_name AS comm_name +,SUM(A.bzs) AS bzs +,SUM(zzs) AS zzs -- 在职人数 +FROM +( + SELECT + A1.pq AS pq + ,A1.xm AS xm + ,SUM(A1.zzs) AS zzs + ,sum(A1.bzs) AS bzs + FROM + ( + SELECT + pq -- 片区 + ,ny + ,xm + ,SUM(zzs) 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 + -- organ_code as pq + -- ,concat(left(ym,4),'-',right(ym,2)) as ny + -- ,'' AS xm + -- ,SUM(zzs) AS zzs + -- ,SUM(bzs) AS bzs + -- FROM ods_hr_history_bz_num + -- WHERE 1 = 1 + -- GROUP BY ym,organ_code + )A1 + WHERE A1.ny = '${p_ym}' + group by A1.pq,A1.xm +)A +RIGHT JOIN +( + SELECT + organ_code -- erp片区编码 + ,organ_name -- erp片区名称 + ,hr_organ_id -- hr片区编码 + ,hr_organ_name -- hr片区名称 + ,hr_comm_id -- hr项目id + ,hr_comm_name -- hr项目名称 + ,comm_id + ,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 + ,comm_id + ,comm_name +)B +ON A.pq = B.hr_organ_id +AND A.xm = B.hr_comm_id +group by B.organ_code, B.organ_name, B.comm_id, B.comm_name + +) +SELECT +count(1) AS CNT +FROM +( +select + a.comm_name as p_area -- 片区/项目 + -- organ_name -- 片区名称 + -- ,comm_name -- 项目名称 + ,sum(room_num) as room_num -- 房间总数 【总户数】 + ,sum(check_ins_num) as check_ins_num -- 入住数 【入住户数】 + ,case when sum(check_ins_num) = 0 + then 0 + else sum(check_ins_num) / sum(room_num) + end as occupancy_rate -- 入住率 + ,SUM(IFNULL(b.zzs,0)) AS zzs -- 在职数 + ,CASE WHEN sum(check_ins_num) = 0 + THEN 0 ELSE SUM(IFNULL(b.zzs,0)) / sum(check_ins_num) END AS zfb -- 住服比 + ,CASE WHEN SUM(b.bzs) = 0 THEN 0 ELSE SUM(b.zzs) / SUM(b.bzs) END AS full_rate -- 满编率 +from +( + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_name + ,SUM(room_num) AS room_num + ,SUM(check_ins_num) AS check_ins_num + FROM dws_operation_room_park_info_d + WHERE 1 = 1 +-- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END + + group by + organ_code + ,organ_name + ,comm_id + ,comm_name +) a +left join hr_date b +on a.organ_code = b.organ_code +and a.comm_id = b.comm_id +where 1=1 +${IF(LEN(p_area)!=0," and a.organ_code IN ('"+JOINARRAY(p_area,"','")+"')","")} +-- ${if(left(fine_role,2)=="项目","and comm_name = '"+GETUSERDEPARTMENTS(3)+"'","")} +AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN a.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","a.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END + +group by +a.comm_name +)T +where T.zfb > 0.1 + diff --git a/finereport/xiazuan/5_manpower/2_员工满编率明细.sql b/finereport/xiazuan/5_manpower/2_员工满编率明细.sql index efd0f42..21dc434 100644 --- a/finereport/xiazuan/5_manpower/2_员工满编率明细.sql +++ b/finereport/xiazuan/5_manpower/2_员工满编率明细.sql @@ -83,6 +83,15 @@ ${if(len(p_area)=0,"", "*/")} -- 项目 ${if(len(p_area)>0,"", "/*")} +with one_to_many AS( +SELECT +a.username AS username -- 用户名 +,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 +FROM ods_one_to_many_perm a +JOIN mysql.help_topic b +on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) +WHERE a.username = '${fine_username}' +) SELECT B.hr_comm_name AS comm_organ_name -- 片区 ,SUM(IFNULL(A.bzs,0)) AS bzs -- 编制数 @@ -253,12 +262,32 @@ ON B.organ_code = C.organ_code AND B.hr_comm_id = C.comm_id WHERE 1=1 ${IF(LEN(p_area)>0," AND B.organ_code IN ('" + p_area +"')", "")} +AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END GROUP BY B.hr_comm_name ${if(len(p_area)>0,"", "*/")} +-- 满编率整体目标 +${if(len(p_area)=0,"", "/*")} +SELECT +full_rate_target -- 满编率目标 +FROM ods_hr_collection_target_overall +WHERE ym = '${p_ym}' +${if(len(p_area)=0,"", "*/")} + +-- 片区整体目标 +${if(len(p_area) =1,"", "/*")} +SELECT +full_rate_target -- 满编率目标 +FROM ods_hr_collection_target_organ +WHERE ym = '${p_ym}' +AND organ_code = '${p_area}' +${if(len(p_area)=1,"", "*/")} + -- ====================================== -- 编制历史数据 -- ====================================== diff --git a/finereport/xiazuan/5_manpower/3_员工离职率明细.sql b/finereport/xiazuan/5_manpower/3_员工离职率明细.sql index 5ee6c93..f5f2bc2 100644 --- a/finereport/xiazuan/5_manpower/3_员工离职率明细.sql +++ b/finereport/xiazuan/5_manpower/3_员工离职率明细.sql @@ -1,3 +1,12 @@ +with one_to_many AS( +SELECT +a.username AS username -- 用户名 +,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 +FROM ods_one_to_many_perm a +JOIN mysql.help_topic b +on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) +WHERE a.username = '${fine_username}' +) SELECT ${IF(LEN(p_area)>0,"B.hr_comm_name", "hr_organ_name")} AS hr_organ_name ,SUM(A.StartOfmonth_zzrs) AS StartOfmonth_zzrs -- 月初在职人数 @@ -170,6 +179,9 @@ RIGHT JOIN ,hr_comm_name -- hr项目名称 FROM dim_organ_mapping WHERE length(hr_comm_id) > 0 + AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END GROUP BY organ_code ,organ_name @@ -191,6 +203,7 @@ 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 ('" + p_area +"')", "")} + GROUP BY ${IF(LEN(p_area)>0,"B.hr_comm_name", "hr_organ_name")} ORDER BY ${IF(LEN(p_area)>0,"B.hr_comm_name", "hr_organ_name")} diff --git a/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql b/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql index d315f26..9b8a1ae 100644 --- a/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql +++ b/finereport/xiazuan/5_manpower/4_人力行政成本费率明细.sql @@ -363,7 +363,15 @@ ${if(and(len(p_area)=0,p_type='行政')," -- 片区排名开始", "*/")} ${if(and(len(p_area)>0,p_type='人力'),"", "/*")} - +with one_to_many AS( +SELECT +a.username AS username -- 用户名 +,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 +FROM ods_one_to_many_perm a +JOIN mysql.help_topic b +on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) +WHERE a.username = '${fine_username}' +) SELECT A1.hr_comm_name AS organ_comm -- 片区 ,SUM(C.lc_fee_rate_target) AS year_fee_rate_target -- 人力费率年度目标值 @@ -397,6 +405,7 @@ SELECT organ_code ,organ_name ,comm_id + ,comm_name ,hr_organ_id ,hr_organ_name ,hr_comm_id @@ -407,6 +416,7 @@ SELECT organ_code ,organ_name ,comm_id + ,comm_name ,hr_organ_id ,hr_organ_name ,hr_comm_id @@ -416,6 +426,7 @@ SELECT '0000' AS organ_code -- erp片区编码 ,'' AS organ_name -- erp片区名称 ,'' AS comm_id + ,'' AS comm_name ,'153' AS hr_organ_id -- hr片区编码 ,'领悦集团总部' AS hr_organ_name -- hr片区名称 ,'153' AS hr_comm_id @@ -487,6 +498,9 @@ SELECT AND A1.hr_comm_id = D.comm_id where 1 = 1 ${IF(LEN(p_area)>0," AND A1.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN A1.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","A1.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END GROUP BY A1.hr_comm_name @@ -494,9 +508,15 @@ SELECT ${if(and(len(p_area)>0,p_type='行政'),"", "/*")} - - - +with one_to_many AS( +SELECT +a.username AS username -- 用户名 +,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 +FROM ods_one_to_many_perm a +JOIN mysql.help_topic b +on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) +WHERE a.username = '${fine_username}' +) SELECT A1.hr_comm_name AS organ_comm -- 片区 ,SUM(C.ac_fee_rate_target) AS year_fee_rate_target -- 人力费率年度目标值 @@ -530,6 +550,7 @@ SELECT organ_code ,organ_name ,comm_id + ,comm_name ,hr_organ_id ,hr_organ_name ,hr_comm_id @@ -540,6 +561,7 @@ SELECT organ_code ,organ_name ,comm_id + ,comm_name ,hr_organ_id ,hr_organ_name ,hr_comm_id @@ -549,6 +571,7 @@ SELECT '0000' AS organ_code -- erp片区编码 ,'' AS organ_name -- erp片区名称 ,'' AS comm_id + ,'' AS comm_name ,'153' AS hr_organ_id -- hr片区编码 ,'领悦集团总部' AS hr_organ_name -- hr片区名称 ,'153' AS hr_comm_id @@ -620,6 +643,9 @@ SELECT AND A1.hr_comm_id = D.comm_id where 1 = 1 ${IF(LEN(p_area)>0," AND A1.organ_code IN ('"+JOINARRAY(p_area,"','")+"')", "")} + AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN A1.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","A1.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END GROUP BY A1.hr_comm_name diff --git a/finereport/xiazuan/5_manpower/5_在职人员明细.sql b/finereport/xiazuan/5_manpower/5_在职人员明细.sql index 121eff8..0a13177 100644 --- a/finereport/xiazuan/5_manpower/5_在职人员明细.sql +++ b/finereport/xiazuan/5_manpower/5_在职人员明细.sql @@ -45,6 +45,15 @@ GROUP BY nld -- 年龄分布 -- 年龄<30岁;30岁≤年龄<40岁;40岁≤年龄<50岁;50岁≤年龄<60岁;60岁≤年龄<65岁;年龄≥65岁; +with one_to_many AS( +SELECT +a.username AS username -- 用户名 +,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 +FROM ods_one_to_many_perm a +JOIN mysql.help_topic b +on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) +WHERE a.username = '${fine_username}' +) SELECT CASE WHEN A.nl < 30.00 THEN '年龄<30岁' WHEN A.nl >= 30.00 AND A.nl < 40.00 THEN '30岁≤年龄<40岁' @@ -66,36 +75,44 @@ FROM )A LEFT JOIN ( - SELECT - organ_code -- erp片区编码 - ,organ_name -- erp片区名称 - ,hr_organ_id -- hr片区编码 - ,hr_organ_name -- hr片区名称 - ,hr_comm_id -- hr项目id - ,hr_comm_name -- hr项目名称 - 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项目名称 - FROM dual + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_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 + ,comm_id + ,comm_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片区名称 + ,'' AS comm_id + ,'' AS comm_name + ,'153' AS hr_organ_id -- hr片区编码 + ,'领悦集团总部' AS hr_organ_name -- hr片区名称 + ,'153' AS hr_comm_id + ,'领悦集团总部' AS hr_comm_name )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 ('"+ p_area +"')", "")} + AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END GROUP BY CASE WHEN nl < 30.00 THEN '年龄<30岁' WHEN nl >= 30.00 AND nl < 40.00 THEN '30岁≤年龄<40岁' @@ -149,7 +166,15 @@ where 1 = 1 GROUP BY sld -- 司龄<3个月内;3个月≤司龄<1年;1年≤司龄<3年;3年≤司龄<5年;5年≤司龄<10年;10年≤司龄<15年;司龄≥15年; - +with one_to_many AS( +SELECT +a.username AS username -- 用户名 +,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 +FROM ods_one_to_many_perm a +JOIN mysql.help_topic b +on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) +WHERE a.username = '${fine_username}' +) SELECT CASE WHEN A.sl < 0.30 THEN '司龄<3个月内' WHEN A.sl >= 0.30 AND A.sl < 1.00 THEN '3个月≤司龄<1年' @@ -173,35 +198,44 @@ FROM LEFT JOIN ( SELECT - organ_code -- erp片区编码 - ,organ_name -- erp片区名称 - ,hr_organ_id -- hr片区编码 - ,hr_organ_name -- hr片区名称 - ,hr_comm_id -- hr项目id - ,hr_comm_name -- hr项目名称 - 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项目名称 - FROM dual + organ_code + ,organ_name + ,comm_id + ,comm_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 + ,comm_id + ,comm_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片区名称 + ,'' AS comm_id + ,'' AS comm_name + ,'153' AS hr_organ_id -- hr片区编码 + ,'领悦集团总部' AS hr_organ_name -- hr片区名称 + ,'153' AS hr_comm_id + ,'领悦集团总部' AS hr_comm_name )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 ('"+ p_area +"')", "")} + AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END + GROUP BY CASE WHEN A.sl < 0.30 THEN '司龄<3个月内' WHEN A.sl >= 0.30 AND A.sl < 1.00 THEN '3个月≤司龄<1年' @@ -256,6 +290,16 @@ where 1 = 1 GROUP BY xl + +with one_to_many AS( +SELECT +a.username AS username -- 用户名 +,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 +FROM ods_one_to_many_perm a +JOIN mysql.help_topic b +on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) +WHERE a.username = '${fine_username}' +) SELECT A.xlmc ,count(1) AS sl @@ -271,36 +315,45 @@ FROM )A LEFT JOIN ( - SELECT - organ_code -- erp片区编码 - ,organ_name -- erp片区名称 - ,hr_organ_id -- hr片区编码 - ,hr_organ_name -- hr片区名称 - ,hr_comm_id -- hr项目id - ,hr_comm_name -- hr项目名称 - 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项目名称 - FROM dual + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_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 + ,comm_id + ,comm_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片区名称 + ,'' AS comm_id + ,'' AS comm_name + ,'153' AS hr_organ_id -- hr片区编码 + ,'领悦集团总部' AS hr_organ_name -- hr片区名称 + ,'153' AS hr_comm_id + ,'领悦集团总部' AS hr_comm_name )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 ('"+ p_area +"')", "")} + AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END + GROUP BY A.xlmc @@ -358,6 +411,15 @@ GROUP BY zwje -- 案场部门负责人 -- 员工 +with one_to_many AS( +SELECT +a.username AS username -- 用户名 +,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 +FROM ods_one_to_many_perm a +JOIN mysql.help_topic b +on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) +WHERE a.username = '${fine_username}' +) SELECT zwmc AS zwje ,count(1) AS sl @@ -374,35 +436,44 @@ FROM LEFT JOIN ( SELECT - organ_code -- erp片区编码 - ,organ_name -- erp片区名称 - ,hr_organ_id -- hr片区编码 - ,hr_organ_name -- hr片区名称 - ,hr_comm_id -- hr项目id - ,hr_comm_name -- hr项目名称 - 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项目名称 - FROM dual + organ_code + ,organ_name + ,comm_id + ,comm_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 + ,comm_id + ,comm_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片区名称 + ,'' AS comm_id + ,'' AS comm_name + ,'153' AS hr_organ_id -- hr片区编码 + ,'领悦集团总部' AS hr_organ_name -- hr片区名称 + ,'153' AS hr_comm_id + ,'领悦集团总部' AS hr_comm_name )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 ('"+ p_area +"')", "")} + AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END + GROUP BY A.zwmc @@ -453,7 +524,15 @@ GROUP BY swtx - +with one_to_many AS( +SELECT +a.username AS username -- 用户名 +,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 +FROM ods_one_to_many_perm a +JOIN mysql.help_topic b +on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) +WHERE a.username = '${fine_username}' +) SELECT A.zycjname ,count(1) AS sl @@ -469,36 +548,46 @@ FROM )A LEFT JOIN ( - SELECT - organ_code -- erp片区编码 - ,organ_name -- erp片区名称 - ,hr_organ_id -- hr片区编码 - ,hr_organ_name -- hr片区名称 - ,hr_comm_id -- hr项目id - ,hr_comm_name -- hr项目名称 - 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项目名称 - FROM dual + SELECT + organ_code + ,organ_name + ,comm_id + ,comm_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 + ,comm_id + ,comm_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片区名称 + ,'' AS comm_id + ,'' AS comm_name + ,'153' AS hr_organ_id -- hr片区编码 + ,'领悦集团总部' AS hr_organ_name -- hr片区名称 + ,'153' AS hr_comm_id + ,'领悦集团总部' AS hr_comm_name )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 ('"+ p_area +"')", "")} + ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+ p_area +"')", "")} + AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END + GROUP BY A.zycjname @@ -550,7 +639,15 @@ GROUP BY zytx - +with one_to_many AS( +SELECT +a.username AS username -- 用户名 +,SUBSTRING_INDEX(SUBSTRING_INDEX(a.mang_project, ',',b.help_topic_id + 1),',',-1) AS mang_project -- 管理项目名 +FROM ods_one_to_many_perm a +JOIN mysql.help_topic b +on b.help_topic_id < (LENGTH(a.mang_project) - length(replace(a.mang_project,',','')) + 1) +WHERE a.username = '${fine_username}' +) SELECT A.zytxmc ,count(1) AS sl @@ -567,35 +664,44 @@ FROM LEFT JOIN ( SELECT - organ_code -- erp片区编码 - ,organ_name -- erp片区名称 - ,hr_organ_id -- hr片区编码 - ,hr_organ_name -- hr片区名称 - ,hr_comm_id -- hr项目id - ,hr_comm_name -- hr项目名称 - 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项目名称 - FROM dual + organ_code + ,organ_name + ,comm_id + ,comm_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 + ,comm_id + ,comm_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片区名称 + ,'' AS comm_id + ,'' AS comm_name + ,'153' AS hr_organ_id -- hr片区编码 + ,'领悦集团总部' AS hr_organ_name -- hr片区名称 + ,'153' AS hr_comm_id + ,'领悦集团总部' AS hr_comm_name )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 ('"+ p_area +"')", "")} + ${IF(LEN(p_area)>0," AND B.organ_code IN ('"+ p_area +"')", "")} + AND CASE WHEN (SELECT mang_project FROM ods_one_to_many_perm WHERE username = '${fine_username}' AND mang_organ IS NULL) IS NOT NULL + THEN B.comm_name IN (SELECT mang_project FROM one_to_many WHERE username = '${fine_username}') + ELSE ${if(left(fine_role,2)=="项目","B.comm_name = '"+GETUSERDEPARTMENTS(3)+"'","1=1")} END + GROUP BY A.zytxmc