日期:2014-05-17  浏览次数:20464 次

这样的结果怎么是0
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
------其他解决方案--------------------
谢谢上面的朋友,还是你高啊。