我有一个名为product_reviews
的投票表,其字段为ENUM
,范围为1到5,名为rating
。
我希望得到product_id为1665的所有行的平均评分。我使用星级评分系统,因此平均值不能带小数。必须是1到5之间的数字。
非常感谢你。
答案 0 :(得分:1)
SELECT round(avg(rating)) as average_review,
count(rating) as number_of_reviews
FROM product_reviews
WHERE product_id = 1665
您需要在此使用round
,因为avg
将返回介于1.0和5.0之间的值,如果您使用floor
或ceil
,则有效消除1 < em>或 5来自可能的结果,除非产品上的所有评论都有该分数。
此外,如果他们可以公开看到一个产品获得50个评论,1个星级,1个评论2个星级,并且您显示平均得分为2星,那么您将疏远您的用户。它会让你的网站看起来不可靠,对于包含评论的网站来说,这通常不是一件好事。因此,大多数星级评定系统也能够显示部分恒星,使其更加精确。