From ae3952a03bb32e261e1a011dc4e6528c69766272 Mon Sep 17 00:00:00 2001 From: cwchen <1048842385@qq.com> Date: Fri, 29 Aug 2025 13:26:30 +0800 Subject: [PATCH] =?UTF-8?q?SQL=20=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/subeva/SubProjectMapper.xml | 40 +++++++++++++------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/modules/bmw/src/main/resources/mapper/subeva/SubProjectMapper.xml b/modules/bmw/src/main/resources/mapper/subeva/SubProjectMapper.xml index 14a7961..fd02316 100644 --- a/modules/bmw/src/main/resources/mapper/subeva/SubProjectMapper.xml +++ b/modules/bmw/src/main/resources/mapper/subeva/SubProjectMapper.xml @@ -127,17 +127,13 @@ MAX(fsp."eva_month") as evaMonth, MAX(fsp."eva_score") AS evaScore, COUNT(bs."sub_name") as proNum, + SUM(fsp."eva_score") / COUNT(bs."sub_name") as evaScore, case - WHEN - COUNT(bm."sub_name") = 0 THEN 0 - ELSE SUM(fsp."eva_score") / COUNT(bs."sub_name") - END as evaScore - case - WHEN COUNT(bm."sub_name") = 0 THEN 0 - WHEN ROUND(SUM(fsp."eva_score") / NULLIF(COUNT(bm."sub_name"), 0), 2) > 90 THEN 1 - when ROUND(SUM(fsp."eva_score") / NULLIF(COUNT(bm."sub_name"), 0), 2) > 80 THEN 2 - when ROUND(SUM(fsp."eva_score") / NULLIF(COUNT(bm."sub_name"), 0), 2) > 60 THEN 3 - when ROUND(SUM(fsp."eva_score") / NULLIF(COUNT(bm."sub_name"), 0), 2) < 61 THEN 4 + WHEN COUNT(bs."sub_name") = 0 THEN 0 + WHEN ROUND(SUM(fsp."eva_score") / NULLIF(COUNT(bs."sub_name"), 0), 2) > 90 THEN 1 + when ROUND(SUM(fsp."eva_score") / NULLIF(COUNT(bs."sub_name"), 0), 2) > 80 THEN 2 + when ROUND(SUM(fsp."eva_score") / NULLIF(COUNT(bs."sub_name"), 0), 2) > 60 THEN 3 + when ROUND(SUM(fsp."eva_score") / NULLIF(COUNT(bs."sub_name"), 0), 2) < 61 THEN 4 else 0 End as status FROM @@ -147,12 +143,30 @@ AND bs."id" IS NOT NULL LEFT JOIN "ynrealname"."fbeva_sub_project" fsp ON fsp."contract_id" = bsc."id" WHERE - bs."id" IS NOT NULL - AND fsp."eva_month" IS NOT NULL + WHERE + bsc."is_active" = '1' + AND td."value" = #{params.month} and fcpe."eva_date" is not null + + + AND bp."id" =#{params.proId} + + + AND bsc."contract_name" LIKE concat('%', #{params.subName}, '%') + + + GROUP BY bs."sub_name" - having status = #{params.status} + HAVING + CASE + WHEN COUNT(bs."sub_name") = 0 THEN 0 + WHEN ROUND(SUM(fsp."eva_score") / COUNT(bs."sub_name"), 2) > 90 THEN 1 + WHEN ROUND(SUM(fsp."eva_score") / COUNT(bs."sub_name"), 2) > 80 THEN 2 + WHEN ROUND(SUM(fsp."eva_score") / COUNT(bs."sub_name"), 2) > 60 THEN 3 + WHEN ROUND(SUM(fsp."eva_score") / COUNT(bs."sub_name"), 2) < 61 THEN 4 + ELSE 0 + END = #{params.status} OFFSET #{offset} ROWS FETCH NEXT #{limit} ROWS ONLY