我試圖做的SQL如下操作來計算加權的評價:SQL服務器計算返回0,而不是一個浮點值
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。 。我嘗試使用轉換(FLOAT,操作)作爲WeightedRating但我仍然得到0的結果。
當我在計算器上手動執行此操作時,它返回2.5416666..so我確信SQL Server不是能夠管理我提供給操作的值。
我應該做別的事嗎?
的值是: vote_count是2 vote_mean是2.5 @minimumVotesRequired是1
編輯:
現在鑄造一切浮動後的唯一值是從CTE_3.vote_mean
2.5SELECT 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;
有什麼建議我錯過了什麼?
各種組件列的數據類型是什麼?是vote_count一個整數[或長或類似]? – Joe
把它們當作float float – meda
我剛剛編輯了我的代碼,顯然使用COUNT會破壞我的代碼。將COUNT中的2或3替換爲合適的值將如何解決此問題? –