扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
sql server 2008 整数相除需要除数或被除数有一个数据类型为小数,才可以四舍五入。
站在用户的角度思考问题,与客户深入沟通,找到金东网站设计与金东网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站建设、成都网站建设、企业官网、英文网站、手机端网站、网站推广、域名申请、虚拟空间、企业邮箱。业务覆盖金东地区。
首先看一个例子,如图:
两条语句唯一区别就是 10 与 10.00
1、select cast(round(10/6,0) as int) 结果:1
2、select cast(round(10.00/6,0) as int) 结果:2
但结果确不一样。
原因是SQLserver有默认的数据类型转换。
10/6 默认转换为整型 即:10/6 = 1。那么 round(1) = 1
10.00/6 默认转换为小数即:10.00/6 = 1.666666 ,那么 round(1.666666,0) = 2
select (select count(*) as y from t where s='b')
(select count(*) as n from t where s!='b')
在SqlServer默认当做int类型,两个int变量相除得到的还是个int类型 ,所以只要把其中一个改成小数类型的就可以得到你要的结果了。
除法运算
一款简单的除法运算题目,小朋友们懂的做,很简单的除法运算,小朋友们来挑战一下
运算是一种游戏,适用于小孩子对于数学的理解。
1.round() 函数是四舍五入用,第一个参数是我们要被操作的数据,第二个参数是设置我们四舍五入之后小数点后显示几位。
2.numeric 函数的2个参数,第一个表示数据长度,第二个参数表示小数点后位数。
例如:
select cast(round(12.5,2) as numeric(5,2)) 结果:12.50
select cast(round(12.555,2) as numeric(5,2)) 结果:12.56
select cast(round(122.5255,2) as numeric(5,2)) 结果:122.53
select cast(round(1222.5255,2) as numeric(5,2)) 结果:报错了! 原因是:1222.5255,整数位是4,小数位是2,加起来4+2=6,超出了numeric设置的5位,所以为了保险,可以增减numeric的参数,例如numeric(20,2)。
你错误的问题点在于两个子查询之间没有任何关联,不能直接除。首先我们要建立关联关系。再除
select a.值1,(case when isnull(b.值2,0)=0 then 0 else a.值1/b.值2) ---记得除数为0处理
from (select 值2,SUM(值1) AS 值1 from 表1 group by 值2) a
innor join (看情况使用innor join 还是 full 还是Left)
(select 值2,sum(值1) AS 值1 from 表2 group by 值2) b on A.值2=b.值2
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流