日期:2014-05-18 浏览次数:20532 次
cast(avg(b.score) as decimal(18,2)) --cast转换数据类型的,如果score为varchar转换为int 用于比较 --不是有什么好处,如果知道score就是int类型,就不用cast了
------解决方案--------------------
cast('123' as int) --把字符123转为int型
------解决方案--------------------
总结下,score为varchar类型,用第一种;int型,用第二种(也可第一种);
------解决方案--------------------
第一种就是转换了下类型而已,不用考虑score的具体类型,更加严谨吧
------解决方案--------------------
转换为DECIMAL更加精确。
得到的结果是60.00这样的
------解决方案--------------------
select a.S# , a.Sname , avg(score) from Student a , sc b where a.S# = b.S# group by a.S# , a.Sname having avg(score*1.0) >= 60