From bf46df90e604f2bf114527f1ed6bca89c231926b Mon Sep 17 00:00:00 2001
From: xieb <vip_xiaobin810@163.com>
Date: Mon, 29 Jan 2024 16:02:08 +0800
Subject: [PATCH] sql优化
---
skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml | 249 ++++++++++++++++++++++++++++---------------------
1 files changed, 144 insertions(+), 105 deletions(-)
diff --git a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml
index 6a7a1d6..9c4a4b0 100644
--- a/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml
+++ b/skjcmanager/skjcmanager-service/skjcmanager-sm/src/main/java/cn/gistack/sm/damSecurity/mapper/DamSecurityMapper.xml
@@ -316,114 +316,153 @@
</select>
<select id="listRegionCountOptimize" resultType="cn.gistack.sm.damSecurity.vo.DamSecurityStatistics">
-
- SELECT allNum,errorNum, allNum-errorNum normalNum,adName,adCode FROM
- (
-
- SELECT
- (
- SELECT COUNT(*) FROM
- (
- SELECT
- a."guid",
- a."name",
- a."eng_scal",
- case when b."ad_grad" = 4 THEN b."ad_code" ELSE NULL END AS "town_ad_code",
- case when b."ad_grad" = 4 THEN b."ad_name" ELSE NULL END AS "town_ad_name",
- case when b."ad_grad" = 4 THEN b."order_id" ELSE NULL END AS "town_order_id",
- case when b."ad_grad" = 3 THEN b."ad_code"
- when c."ad_grad" = 3 THEN c."ad_code" END AS "county_ad_code",
- case when b."ad_grad" = 3 THEN b."ad_name"
- when c."ad_grad" = 3 THEN C."ad_name" END AS "county_ad_name",
- case when b."ad_grad" = 3 THEN b."order_id"
- when c."ad_grad" = 3 THEN C."order_id" END AS "county_order_id",
- case when b."ad_grad" = 2 THEN b."ad_code"
- when c."ad_grad" = 2 THEN c."ad_code"
- ELSE d."ad_code" END AS "city_ad_code",
- case when b."ad_grad" = 2 THEN b."ad_name"
- when c."ad_grad" = 2 THEN c."ad_name"
- ELSE d."ad_name" END AS "city_ad_name",
- case when b."ad_grad" = 2 THEN b."order_id"
- when c."ad_grad" = 2 THEN c."order_id"
- ELSE d."order_id" END AS "city_order_id",
- case when b."ad_grad" = 1 THEN b."ad_code"
- when c."ad_grad" = 1 THEN c."ad_code"
- when d."ad_grad" = 1 THEN d."ad_code"
- ELSE e."ad_code" END AS "province_ad_code",
- case when b."ad_grad" = 1 THEN b."ad_name"
- when c."ad_grad" = 1 THEN c."ad_name"
- when d."ad_grad" = 1 THEN d."ad_name"
- ELSE e."ad_name" END AS "province_ad_name",
- case when b."ad_grad" = 1 THEN b."order_id"
- when c."ad_grad" = 1 THEN c."order_id"
- when d."ad_grad" = 1 THEN d."order_id"
- ELSE e."order_id" END AS "province_order_id"
- FROM sjzt_md."att_res_base" a
- LEFT JOIN (
+ select "ad_code","ad_name",allNum,errorNum,allNum-errorNum normalNum from (
+ select "ad_code","ad_name",
+ (
+ select count(*) from (
+ select max(NAG.dam_id) dam_id
+ FROM ywxt.NKY_ALARM_GET NAG
+ where DATE_FORMAT(time,'%Y-%m-%d') >= #{dam.startTime} AND DATE_FORMAT(time,'%Y-%m-%d') <= #{dam.endTime}
+ group by NAG.dam_id
+ ) NAG
+ left join sjzt_md."att_res_base" res on (res."guid" = NAG.dam_id)
+ left join sjzt_md."att_ad_base" ada on (ada."guid" = res."interior_ad_guid")
+ left join sjzt_md."att_ad_base" adb on (adb."guid" = ada."p_ad_code")
+ left join sjzt_md."att_ad_base" adc on (adc."guid" = adb."p_ad_code")
+ left join sjzt_md."att_ad_base" addd on (addd."guid" = adc."p_ad_code")
+ where res."interior_ad_guid" = aab."guid" or ada."guid" = aab."guid" or adb."guid" = aab."guid" or adc."guid" = aab."guid" or addd."guid" = aab."guid"
- SELECT
- distinct (dri."res_cd")
- FROM
- sjzt_dw."dim_res_info_a" dri
- LEFT JOIN sjzt_ods."dsm_spg_spprmp" dss ON dri."oth_reg_cd" = dss."rscd"
- where dss."rscd" is not null
+ ) as errorNum,
+ (
+ SELECT COUNT(*) FROM (
+ SELECT a."guid",a."name",a."eng_scal",
+ CASE
+ WHEN b."ad_grad" = 4 THEN
+ b."ad_code"
+ ELSE NULL
+ END AS "town_ad_code",
+ CASE
+ WHEN b."ad_grad" = 4 THEN
+ b."ad_name"
+ ELSE NULL
+ END AS "town_ad_name",
+ CASE
+ WHEN b."ad_grad" = 4 THEN
+ b."order_id"
+ ELSE NULL
+ END AS "town_order_id",
+ CASE
+ WHEN b."ad_grad" = 3 THEN
+ b."ad_code"
+ WHEN c."ad_grad" = 3 THEN
+ c."ad_code"
+ END AS "county_ad_code",
+ CASE
+ WHEN b."ad_grad" = 3 THEN
+ b."ad_name"
+ WHEN c."ad_grad" = 3 THEN
+ C."ad_name"
+ END AS "county_ad_name",
+ CASE
+ WHEN b."ad_grad" = 3 THEN
+ b."order_id"
+ WHEN c."ad_grad" = 3 THEN
+ C."order_id"
+ END AS "county_order_id",
+ CASE
+ WHEN b."ad_grad" = 2 THEN
+ b."ad_code"
+ WHEN c."ad_grad" = 2 THEN
+ c."ad_code"
+ ELSE d."ad_code"
+ END AS "city_ad_code",
+ CASE
+ WHEN b."ad_grad" = 2 THEN
+ b."ad_name"
+ WHEN c."ad_grad" = 2 THEN
+ c."ad_name"
+ ELSE d."ad_name"
+ END AS "city_ad_name",
+ CASE
+ WHEN b."ad_grad" = 2 THEN
+ b."order_id"
+ WHEN c."ad_grad" = 2 THEN
+ c."order_id"
+ ELSE d."order_id"
+ END AS "city_order_id",
+ CASE
+ WHEN b."ad_grad" = 1 THEN
+ b."ad_code"
+ WHEN c."ad_grad" = 1 THEN
+ c."ad_code"
+ WHEN d."ad_grad" = 1 THEN
+ d."ad_code"
+ ELSE e."ad_code"
+ END AS "province_ad_code",
+ CASE
+ WHEN b."ad_grad" = 1 THEN
+ b."ad_name"
+ WHEN c."ad_grad" = 1 THEN
+ c."ad_name"
+ WHEN d."ad_grad" = 1 THEN
+ d."ad_name"
+ ELSE e."ad_name"
+ END AS "province_ad_name",
+ CASE
+ WHEN b."ad_grad" = 1 THEN
+ b."order_id"
+ WHEN c."ad_grad" = 1 THEN
+ c."order_id"
+ WHEN d."ad_grad" = 1 THEN
+ d."order_id"
+ ELSE e."order_id"
+ END AS "province_order_id"
+ FROM sjzt_md."att_res_base" a
+ LEFT JOIN (
+ SELECT DISTINCT (dri."res_cd")
+ FROM sjzt_dw."dim_res_info_a" dri
+ LEFT JOIN sjzt_ods."dsm_spg_spprmp" dss
+ ON dri."oth_reg_cd" = dss."rscd"
+ WHERE dss."rscd" is NOT NULL
+ ) f ON a."guid" = f."res_cd"
+ LEFT JOIN (
+ SELECT distinct(dri."res_cd")
+ FROM sjzt_dw."dim_res_info_a" dri
+ LEFT JOIN sjzt_ods."dsm_spg_spqnmp" dss ON trim(dss."rscd") = dri."oth_reg_cd"
+ WHERE dss."rscd" is NOT NULL
+ ) G ON a."guid" = g."res_cd"
+ LEFT JOIN (
+ SELECT distinct("res_cd")
+ FROM sjzt_md."att_wy_cd_base" awcb
+ WHERE awcb."cd" != '00'
+ ) h ON a."guid" = h."res_cd"
+ LEFT JOIN sjzt_md."att_ad_base" b ON a."interior_ad_guid" = b."guid"
+ LEFT JOIN sjzt_md."att_ad_base" c ON b."p_ad_code" = c."guid"
+ LEFT JOIN sjzt_md."att_ad_base" d ON c."p_ad_code" = d."guid"
+ LEFT JOIN sjzt_md."att_ad_base" e ON d."p_ad_code" = e."guid"
+ WHERE
+ (
+ f."res_cd" is NOT null
+ OR g."res_cd" is NOT null
+ OR h."res_cd" is NOT null
+ )
+ AND (d."ad_code" = aab."guid"
+ OR c."ad_code" = aab."guid"
+ OR b."ad_code" = aab."guid" )
+ )
+ ) allNum
- ) f ON a."guid" = f."res_cd"
-
- LEFT JOIN (
-
- SELECT distinct(dri."res_cd")
- from sjzt_dw."dim_res_info_a" dri
- left join sjzt_ods."dsm_spg_spqnmp" dss on trim(dss."rscd") = dri."oth_reg_cd"
- where dss."rscd" is not null
-
- ) G on a."guid" = g."res_cd"
-
-
- LEFT JOIN (
-
-
- SELECT distinct("res_cd") from sjzt_md."att_wy_cd_base" awcb
- where awcb."cd" != '00'
-
-
- ) h ON a."guid" = h."res_cd"
- LEFT JOIN sjzt_md."att_ad_base" b ON a."interior_ad_guid" = b."guid"
- LEFT JOIN sjzt_md."att_ad_base" c ON b."p_ad_code" = c."guid"
- LEFT JOIN sjzt_md."att_ad_base" d ON c."p_ad_code" = d."guid"
- LEFT JOIN sjzt_md."att_ad_base" e ON d."p_ad_code" = e."guid"
- where (f."res_cd" is not null OR g."res_cd" is not null OR h."res_cd" is not null) and (d."ad_code" = aab."guid"
- or c."ad_code" = aab."guid" or b."ad_code" = aab."guid" )
- )
- ) allNum,
-
- (
- SELECT COUNT(*)FROM (SELECT distinct DAM_ID FROM NKY_ALARM_GET NAG
- LEFT JOIN SJZT_MD."att_res_base" arb ON arb."guid" = NAG.DAM_ID
- left join SJZT_MD."att_ad_base" b on arb."interior_ad_guid" = b."ad_code"
- left join SJZT_MD."att_ad_base" c on b."p_ad_code" = c."ad_code"
- left join SJZT_MD."att_ad_base" d on c."p_ad_code" = d."ad_code"
- where (d."ad_code" = aab."guid" or c."ad_code" = aab."guid" or b."ad_code" = aab."guid" )
-
- <if test="dam.startTime != null and dam.startTime != ''">
- AND DATE_FORMAT(time,'%Y-%m-%d') >= #{dam.startTime}
- </if>
- <if test="dam.endTime != null and dam.endTime !='' ">
- AND DATE_FORMAT(time,'%Y-%m-%d') <= #{dam.endTime}
- </if>
-
- )) errorNum,
- aab."ad_name" adName , aab."guid" adCode from SJZT_MD."att_ad_base" aab
- where
- <choose>
- <when test="dam.adCode != null and dam.adCode !='' ">
- "p_ad_code" = #{dam.adCode}
- </when>
- <otherwise>
- "ad_grad" = 2
- </otherwise>
- </choose>
+ FROM SJZT_MD."att_ad_base" aab
+ where
+ <choose>
+ <when test="dam.adCode != null and dam.adCode !='' ">
+ "p_ad_code" = #{dam.adCode}
+ </when>
+ <otherwise>
+ "ad_grad" = 2
+ </otherwise>
+ </choose>
)
</select>
--
Gitblit v1.9.3