SQL 修改

This commit is contained in:
cwchen 2025-08-29 13:26:30 +08:00
parent bcb3982b2e
commit ae3952a03b
1 changed files with 27 additions and 13 deletions

View File

@ -127,17 +127,13 @@
MAX(fsp."eva_month") as evaMonth, MAX(fsp."eva_month") as evaMonth,
MAX(fsp."eva_score") AS evaScore, MAX(fsp."eva_score") AS evaScore,
COUNT(bs."sub_name") as proNum, COUNT(bs."sub_name") as proNum,
SUM(fsp."eva_score") / COUNT(bs."sub_name") as evaScore,
case case
WHEN WHEN COUNT(bs."sub_name") = 0 THEN 0
COUNT(bm."sub_name") = 0 THEN 0 WHEN ROUND(SUM(fsp."eva_score") / NULLIF(COUNT(bs."sub_name"), 0), 2) > 90 THEN 1
ELSE SUM(fsp."eva_score") / COUNT(bs."sub_name") when ROUND(SUM(fsp."eva_score") / NULLIF(COUNT(bs."sub_name"), 0), 2) > 80 THEN 2
END as evaScore when ROUND(SUM(fsp."eva_score") / NULLIF(COUNT(bs."sub_name"), 0), 2) > 60 THEN 3
case when ROUND(SUM(fsp."eva_score") / NULLIF(COUNT(bs."sub_name"), 0), 2) < 61 THEN 4
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
else 0 else 0
End as status End as status
FROM FROM
@ -147,12 +143,30 @@
AND bs."id" IS NOT NULL AND bs."id" IS NOT NULL
LEFT JOIN "ynrealname"."fbeva_sub_project" fsp ON fsp."contract_id" = bsc."id" LEFT JOIN "ynrealname"."fbeva_sub_project" fsp ON fsp."contract_id" = bsc."id"
WHERE WHERE
bs."id" IS NOT NULL WHERE
AND fsp."eva_month" IS NOT NULL bsc."is_active" = '1'
AND td."value" = #{params.month} and fcpe."eva_date" is not null
<if test="params != null and params != ''">
<if test="params.proId != null and params.proId != ''">
AND bp."id" =#{params.proId}
</if>
<if test="params.subName != null and params.subName != ''">
AND bsc."contract_name" LIKE concat('%', #{params.subName}, '%')
</if>
</if>
GROUP BY GROUP BY
bs."sub_name" bs."sub_name"
<if test="params.status != null and params.status != '' "> <if test="params.status != null and params.status != '' ">
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) &lt; 61 THEN 4
ELSE 0
END = #{params.status}
</if> </if>
<if test="offset != null and offset >= 0 and limit != null and limit >= 0"> <if test="offset != null and offset >= 0 and limit != null and limit >= 0">
OFFSET #{offset} ROWS FETCH NEXT #{limit} ROWS ONLY OFFSET #{offset} ROWS FETCH NEXT #{limit} ROWS ONLY