在SQL中为多个ID计算单独的百分比值

时间:2019-01-19 11:17:17

标签: sql-server

我有一个表,其中包含CitrixID,Wave,DocNumber,不正确,正确和百分比列

enter image description here

如何获取多个CitrixID的单独百分比值?

我在sql中编写了以下查询,但返回的百分比值错误。

 SELECT Citrix_ID, Wave,Document_Number, SUM(Attempt) as Incorrect,SUM(AttemptGreen) as Correct, 
         CONCAT((SUM(AttemptGreen) *100 / (SELECT SUM(AttemptGreen) + SUM(Attempt) FROM tblTrackQuestErrors WHERE Wave='Wave 86' and Document_Number='0123123123116')),'%')  AS Percentage  
         FROM tblTrackQuestErrors WHERE Wave='Wave 86' and Document_Number='0123123123116' group by Citrix_ID,Wave,Document_Number

我需要输出如下所示

enter image description here

3 个答案:

答案 0 :(得分:0)

Sudhakar,请您参考以下选择和百分比计算

select
    convert(
        decimal(5,2), 
        isnull(correct,0) * 100.0 / case when (isnull(correct,0) + isnull(incorrect,0)) = 0 
                                        then null 
                                        else (isnull(correct,0) + isnull(incorrect,0)) 
                                    end
    ) as [percentage]
from tbl

答案 1 :(得分:0)

我没有您的桌子,但这应该可以工作

SELECT Citrix_ID, Wave,Document_Number, SUM(Attempt) as Incorrect, SUM(AttemptGreen) as Correct
, SUM(AttemptGreen) *100 / SUM(AttemptGreen) + SUM(Attempt) AS Percentage
,MIN((
  SELECT SUM(T1.AttemptGreen) *100 / SUM(T1.AttemptGreen) + SUM(T1.Attempt) 
  FROM   tblTrackQuestErrors T1
  WHERE  T1.Wave            = tblTrackQuestErrors.Wave
  AND    T1.Document_Number = tblTrackQuestErrors.Document_Number
)) AS Percentage_Multi_CitrixID
FROM   tblTrackQuestErrors
group by Citrix_ID,Wave,Document_Number

答案 2 :(得分:0)

选择Citrix_ID,Wave,Document_Number,错误的SUM(Attempt),正确的SUM(AttemptGreen),         CONCAT(CONVERT(DECIMAL(5,2),SUM(AttemptGreen)* 100.0 /案例(SUM(AttemptGreen)+ SUM(Attempt))= 0 THEN NULL ELSE(SUM(AttemptGreen)+ SUM(Attempt))END), '%')作为[百分比]
        FROM tblTrackQuestErrors WHERE Wave = @ Wave和Document_Number = @ Document_Number组,按Citrix_ID,Wave,Document_Number