select '语文',round(sum(CASE WHEN 语文>=83 THEN 1 ELSE 0 END)/count(1)*100,2) as 优秀率,round(sum(CASE WHEN 语文>=72 THEN 1 ELSE 0 END)/count(1)*100,2) as 良好率, round(sum(CASE WHEN 语文>=64 THEN 1 ELSE 0 END)/count(1)*100,2) as 及格率, round(avg(语文),2) as 平均分 from cj where 班级='1'
计算出优秀率、良好率和及格率怎么是0?
------最佳解决方案--------------------
试试,因为你那个一直是整形运算,导致小数位被去掉了。
SELECT '语文' ,
ROUND(SUM(CASE WHEN 语文 >= 83 THEN 1.0
ELSE 0.0
END) / COUNT(1) * 100, 2) AS 优秀率 ,
ROUND(SUM(CASE WHEN 语文 >= 72 THEN 1.0
ELSE 0.0
END) / COUNT(1) * 100, 2) AS 良好率 ,
ROUND(SUM(CASE WHEN 语文 >= 64 THEN 1.0
ELSE 0.0
END) / COUNT(1) * 100, 2) AS 及格率 ,
ROUND(AVG(语文), 2) AS 平均分
FROM cj
WHERE 班级 = '1'
------其他解决方案--------------------
因为结果就是0
------其他解决方案--------------------
根据数据,我自己算,绝对不是0
------其他解决方案--------------------
谢谢上面的朋友,还是你高啊。