Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL百分比错误。尝试使用ABS()时遇到的问题_Sql_Sql Server - Fatal编程技术网

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 ;