首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

这样的结果如何是0

2012-12-17 
这样的结果怎么是0select 语文,round(sum(CASE WHEN 语文83 THEN 1 ELSE 0 END)/count(1)*100,2) as

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

热点排行
Bad Request.