fix: 检测项目分类更改为统计各类型完成数量而不是检测使用数量
| | |
| | | </select> |
| | | |
| | | <select id="getTopParameters" resultType="com.ruoyi.quality.dto.QualityParameterStatDto"> |
| | | WITH parameter_counts AS (SELECT qip.parameter_item AS name, COUNT(*) AS count |
| | | FROM quality_inspect_param qip |
| | | JOIN quality_inspect qi ON qip.inspect_id = qi.id |
| | | WITH parameter_counts AS (SELECT qip.parameter_item AS name, |
| | | SUM(COALESCE(qi.quantity, 0)) AS count |
| | | FROM quality_inspect qi |
| | | JOIN quality_inspect_param qip ON qip.inspect_id = qi.id |
| | | WHERE qi.inspect_type = #{inspectType} |
| | | GROUP BY qip.parameter_item), |
| | | total AS (SELECT SUM(count) as total_count |
| | | FROM parameter_counts), |
| | | ranked AS (SELECT name, count, ROW_NUMBER() OVER (ORDER BY count DESC) as rn |
| | | FROM parameter_counts) |
| | | ranked AS (SELECT name, |
| | | count, |
| | | ROW_NUMBER() OVER (ORDER BY count DESC) AS rn |
| | | FROM parameter_counts), |
| | | total AS (SELECT SUM(count) AS total_count |
| | | FROM parameter_counts) |
| | | SELECT name, |
| | | count, |
| | | CASE |
| | | WHEN (SELECT total_count FROM total) = 0 THEN 0 |
| | | ELSE ROUND(count / (SELECT total_count FROM total) * 100, 2) |
| | | END as percentage |
| | | END AS percentage |
| | | FROM (SELECT name, count, rn |
| | | FROM ranked |
| | | WHERE rn <= 4 |
| | | UNION ALL |
| | | SELECT '其他' as name, SUM(count) as count, 5 as rn |
| | | SELECT '其他检测' AS name, |
| | | SUM(count) AS count, |
| | | 5 AS rn |
| | | FROM ranked |
| | | WHERE rn > 4 |
| | | HAVING count > 0) sub |
| | | HAVING SUM(count) > 0) t |
| | | ORDER BY rn |
| | | </select> |
| | | |
| | | </mapper> |