You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL中为多个CitrixID计算独立百分比(修复错误查询)

解决CitrixID独立计算百分比的SQL问题

我来帮你搞定这个百分比计算的问题~咱们先分析下原查询的问题所在:

你原来的SQL里,百分比计算的分母用了一个子查询(SELECT SUM(AttemptGreen) + SUM(Attempt) FROM tblTrackQuestErrors WHERE Wave='Wave 86' and Document_Number='0123123123116'),这个子查询取的是整个Wave 86和文档0123123123116的总正确+错误数,所以不管哪个CitrixID,计算出来的百分比都是一样的,完全不符合“每个CitrixID独立计算百分比”的需求。

修正后的SQL查询

正确的做法是,每个CitrixID的百分比应该用自己的Correct数除以自己的Correct+Incorrect总数,同时为了避免出现除以0的报错,我们可以用NULLIF来处理除数为0的情况:

SELECT 
    Citrix_ID, 
    Wave,
    Document_Number, 
    SUM(Attempt) as Incorrect,
    SUM(AttemptGreen) as Correct, 
    CONCAT(
        ROUND((SUM(AttemptGreen) * 100.0) / NULLIF(SUM(AttemptGreen) + SUM(Attempt), 0), 2),
        '%'
    ) AS Percentage 
FROM tblTrackQuestErrors 
WHERE Wave='Wave 86' and Document_Number='0123123123116' 
GROUP BY Citrix_ID, Wave, Document_Number;

关键修改点说明

  • 分母从全局子查询改成了当前分组的SUM(AttemptGreen) + SUM(Attempt),这样每个CitrixID都会用自己的总尝试数来计算百分比
  • 加入NULLIF(..., 0):如果某个CitrixID的Correct+Incorrect总数为0,会返回NULL而不是报错,你也可以根据需求改成0%(把NULLIF替换成COALESCE(SUM(AttemptGreen) + SUM(Attempt), 0)即可)
  • 用ROUND(..., 2)来控制百分比的小数位数,让结果更美观(你可以调整数字来改变小数位数)

这样修改后,每个CitrixID都会得到属于自己的独立百分比啦~

内容的提问来源于stack exchange,提问作者Sudhakar Chitlam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:55:58