Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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 server SQL Server计算返回0而不是浮点值_Sql Server_Tsql - Fatal编程技术网

Sql server SQL Server计算返回0而不是浮点值

Sql server SQL Server计算返回0而不是浮点值,sql-server,tsql,Sql Server,Tsql,我尝试在SQL中执行以下操作以计算加权评级: SELECT CTE_3.idProduct,(CTE_3.vote_count / (CTE_3.vote_count + @minimumVotesRequired)) * CTE_3.vote_mean + (@minimumVotesRequired / (CTE_3.vote_count+ @minimumVotesRequired)) * ((SUM(CTE_3.vote_mean)/COUNT(CTE_3.IdProduct))) AS

我尝试在SQL中执行以下操作以计算加权评级:

SELECT CTE_3.idProduct,(CTE_3.vote_count / (CTE_3.vote_count + @minimumVotesRequired)) * CTE_3.vote_mean + (@minimumVotesRequired / (CTE_3.vote_count+ @minimumVotesRequired)) * ((SUM(CTE_3.vote_mean)/COUNT(CTE_3.IdProduct))) AS WeightedRating
FROM CTE_3
GROUP BY CTE_3.IdProduct,
         CTE_3.vote_count,
         CTE_3.vote_mean     
ORDER BY idProduct;
但是我面临的问题是结果总是0。。我尝试使用Convert(FLOAT,operation)作为WeightedRating,但结果仍然是0

当我在计算器上手动执行此操作时,它返回2.5416666

我应该做些别的事情而不是演员吗

这些数值是: 计票数为2票 平均票数是2.5 @所需最小电压为1

编辑:

现在,将所有内容转换为浮动后,唯一的值是CTE_3的2.5

SELECT CTE_3.idProduct,(CONVERT(FLOAT,CTE_3.vote_count) / (CONVERT(FLOAT,CTE_3.vote_count) + @minimumVotesRequired))
                        * CONVERT(FLOAT,CTE_3.vote_mean) + 
                        (@minimumVotesRequired / (CONVERT(FLOAT,CTE_3.vote_count)+ @minimumVotesRequired))
                        * (SUM(CONVERT(FLOAT,CTE_3.vote_mean)))/COUNT(CTE_3.IdProduct)) AS WeightedRating
FROM CTE_3
GROUP BY CTE_3.IdProduct,
         CTE_3.vote_count,
         CTE_3.vote_mean     
ORDER BY idProduct;

我缺少什么建议?

如果CTE_3.vote_count类型为int或@minimumVotesRequired类型为int,则您将获得截断的int值。确保这些是浮点数,或者在进行除法之前将它们作为浮点数进行转换


另外,不要忘记COUNT是一个整数函数。您还需要将计数结果转换为浮点。

各种组件列的数据类型是什么?投票计数是整数[或长或类似]?我刚刚编辑了我的代码,显然使用计数会破坏我的代码。。用2或3代替COUNT会抛出一个合适的值。我如何解决这个问题?我这样做了,但只得到了一个不被截断的值。如果在对int执行算术运算之前,确保对int的每个引用都被转换为float,您就不会看到这个问题。你能编辑你的问题以包含你的代码的最新版本吗?我刚刚编辑了我的代码,显然使用了计数来打破我的代码。。用2或3代替COUNT会抛出一个合适的值,我如何解决这个问题?这是因为COUNT是一个返回INT的函数。你也需要对它进行转换。转换(float,COUNT(..))同样,我将使用的一个快捷方式是乘以1.00。这将强制int表达式通过隐式转换生成浮点。