我有以下查询,它应该返回已通过和失败的活动数。
我在计算每一行的失败和已通过活动之间的百分比时,我们现在可以看到我返回0。
非常感谢任何帮助。
查询:
WITH CTE
AS(
select activityid,
SUM(CASE WHEN success = 1 THEN 1 ELSE 0 END) AS Pass,
SUM(CASE WHEN success = 0 THEN 1 ELSE 0 END) AS Fail
from mytable
group by activityid
)
select activityid, pass, fail,
0 as passPercentage, 0 failPercentage
from cte
结果集:
activityid pass fail passPercentage failPercentage
1 26 22 0 0
2 23 29 0 0
答案 0 :(得分:3)
试试这个:
WITH CTE
AS(
select activityid,
SUM(CASE WHEN success = 1 THEN 1 ELSE 0 END) AS Pass,
SUM(CASE WHEN success = 0 THEN 1 ELSE 0 END) AS Fail
from mytable
group by activityid
)
select activityid, pass, fail,
pass*100.0/(pass + fail) as passPercentage,
fail*100.0/(pass + fail) as failPercentage
from cte
<强>更新强>
如果您有空活动。
WITH CTE
AS(
select activityid,
SUM(CASE WHEN success = 1 THEN 1 ELSE 0 END) AS Pass,
SUM(CASE WHEN success = 0 THEN 1 ELSE 0 END) AS Fail
from mytable
group by activityid
)
select activityid, pass, fail,
CASE WHEN pass + fail = 0 THEN 0 ELSE pass*100.0/(pass + fail) END as passPercentage,
CASE WHEN pass + fail = 0 THEN 0 ELSE fail*100.0/(pass + fail) END as failPercentage
from cte