我正在尝试在 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) AS WeightedRating 但我仍然得到 0 的结果。
当我在计算器上手动执行此操作时,它返回 2.5416666..所以我很确定 SQL Server 无法管理我提供给操作的值。
除了演员表,我还应该做点别的吗?
值是: vote_count 是 2 vote_mean 是 2.5 @minimumVotesRequired 是 1
编辑 :
现在将所有内容转换为浮动后的唯一值是 CTE_3.vote_mean 的 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;
关于我缺少什么的任何建议?