当我尝试通过sql获得百分比计算时,我得到了不同的结果。
ROUND( 100 * ( Col2 / ( Col1 + Col2)))
输出
col1 col2 colR
----- ----- ------
150 51 34
-400.11 -160.04 40
当它除以两个负值时,它给出的是40而不是29.要交叉检查,我写了这个查询
select round( 100* ( -160.04/-560.15 ) ) from dual;
它完美无缺,我得到了29。
我的问题是:
编辑:
我的不好,我犯了一个拼写错误并得出了这个结论。我该如何关闭这个问题?
答案 0 :(得分:0)
也许你期望这个结果:
ROUND( 100 * ( Col2 / ( ABS(Col1) + ABS(Col2))))
答案 1 :(得分:0)
根据@ HLGEM上面的评论...
在SQL Server中,给出以下内容:
create table #foo
(
c1 float not null ,
c2 float not null ,
c1c2sum as c1 + c2 ,
cR as round( 100.0 * c2 / (c1+c2) , 0 ) ,
cX as round( 100.0 * c2 / c1 , 0 ) ,
)
insert #foo (c1,c2) values( 150 , 51 )
insert #foo (c1,c2) values( -400.11 , -160.04 )
执行:
select * from #foo
产生以下结果集:
c1 c2 c1c2sum cR cX
------- ------ ------- -- --
150 51 201 25 34
-400.11 -160.04 -560.15 29 40
我怀疑你有一个括号问题,可以这么说。