SQL百分比错误。尝试使用ABS()时遇到的问题
我试图找到每行两列的错误百分比 现在我试过了SQL百分比错误。尝试使用ABS()时遇到的问题,sql,sql-server,Sql,Sql Server,我试图找到每行两列的错误百分比 现在我试过了 UPDATE Weather SET PercentError=ActualTemp - ForecastTemp / ActualTemp * 100 我知道这是正确的,因为当我进行计算时,它与sql给出的结果不匹配。然后我试着用一些类似于 UPDATE Weather SET PercentError=ABS (ActualTemp - ForecastTemp) / ActualTemp * 100 但是当我这样做的时候,我
UPDATE Weather
SET PercentError=ActualTemp - ForecastTemp / ActualTemp * 100
我知道这是正确的,因为当我进行计算时,它与sql给出的结果不匹配。然后我试着用一些类似于
UPDATE Weather
SET PercentError=ABS (ActualTemp - ForecastTemp) / ActualTemp * 100
但是当我这样做的时候,我的错误率只有0。我使用ABS是因为我知道它与INT一起工作,但我想看看它在减去两列时是否有效
我一直在研究如何用abs减去两列,但他们只是用abs把它们的数字变成正数,而从不在方程中使用它。有没有人能为我指出正确的方向,告诉我如何让它正常工作?
*使用Microsoft sql server进行整数计算。尝试浮点数学:
UPDATE Weather
SET PercentError=
(100.0 * ABS (ActualTemp - ForecastTemp)) / ActualTemp
请注意,我将100放在等式前面,并在除法之前强制执行乘法。修复括号怎么样
UPDATE Weather
SET PercentError = (ActualTemp - ForecastTemp) * 100.0 / ActualTemp ;
100.0
确保除法不是整数除法
负数似乎合理,但您可以包括ABS()
:
使用浮点运算。或者将其转换为十进制
ABS(x-y)*100.0/z
正在处理的列的数据类型是什么?小心隐式整数浮点转换。这可能是因为您的数据类型是INT
。任何小于1的值都将返回0。
UPDATE Weather
SET PercentError = ABS(ActualTemp - ForecastTemp) * 100.0 / ActualTemp ;