sqlserver相除,sql 相除

sqlserver里取两个整数相除的百分比,小数点后保留2位用什么函数

1.round() 函数是四舍五入用,第一个参数是我们要被操作的数据,第二个参数是设置我们四舍五入之后小数点后显示几位。

成都创新互联公司是一家网站制作、网站设计,提供网页设计,网站设计,网站制作,建网站,按需求定制网站,网站开发公司,于2013年开始是互联行业建设者,服务者。以提升客户品牌价值为核心业务,全程参与项目的网站策划设计制作,前端开发,后台程序制作以及后期项目运营并提出专业建议和思路。

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)。

sql相除的问题

SELECT field1/field2 FROM TB;

当 field1的数值 field2的数值时,除法得出的结果是1的,即0.xxxxxx

这个时候在DB2的环境下SELECT出来的值是0

解决方法:

先把field1转换成DOUBLE类型的,这样计算出来的就会得出小数点了,会显示出0.xxxx

SELECT CAST(field1 AS FLOAT)/field2 FROM TB;

ps.网上搜的资料,写的是double,但在SQL Server2008中一直报错,改成FLOAT就没问题了。

小数点显示4位小数。可以进一步四舍五入,保留两位小数点

SELECT ROUND(CAST(field1 AS DOUBLE)/field2, 2) FROM TB;

如果数据列的值为NULL,将其设置为0,那么sql就要这么写

SELECT ROUND(COALESCE(CAST(field1 AS DOUBLE), 0)/field2, 2) FROM TB;

COALESCE这个函数系统的用法如下:

a. 输入参数为字符类型,且允许为空的,可以使用COALESCE(inputParameter,”)把NULL转换成”;

b. 输入类型为整型,且允许为空的,可以使用COALESCE(inputParameter,0),把空转换成0;

c. 输入参数为字符类型,且是非空非空格的,可以使用COALESCE(inputParameter,”)把NULL转换成”,然后判断函数返回值是否为”;

d. 输入类型为整型,且是非空的,不需要使用COALESCE函数,直接使用IS NULL进行非空判断。

SQLServer中SQL语句如何对两个group By后的查询结果进行相除?

你错误的问题点在于两个子查询之间没有任何关联,不能直接除。首先我们要建立关联关系。再除

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

sql server 简单的除法运算

select (select count(*) as y from t where s='b')

(select count(*) as n from t where s!='b')

在SqlServer默认当做int类型,两个int变量相除得到的还是个int类型 ,所以只要把其中一个改成小数类型的就可以得到你要的结果了。

除法运算

一款简单的除法运算题目,小朋友们懂的做,很简单的除法运算,小朋友们来挑战一下

运算是一种游戏,适用于小孩子对于数学的理解。


标题名称:sqlserver相除,sql 相除
文章源于:http://myzitong.com/article/dscosod.html