我有一張名爲product_reviews
的投票表,其字段爲從1到5的ENUM
,名爲rating
。我如何獲得平均評分並湊整至最接近的1?
我想從product_id 1665的所有行中獲得平均評分。我使用星級評分系統,因此平均值不能帶小數。必須是從1到5的數字。
非常感謝。
我有一張名爲product_reviews
的投票表,其字段爲從1到5的ENUM
,名爲rating
。我如何獲得平均評分並湊整至最接近的1?
我想從product_id 1665的所有行中獲得平均評分。我使用星級評分系統,因此平均值不能帶小數。必須是從1到5的數字。
非常感謝。
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 或 5除非所有評論在產品上有那個分數。
此外,如果用戶能夠公開地看到產品獲得了50條評論和1星評價,並且1條評論評價爲2星級,那麼您將疏遠用戶,並且您在旁邊顯示的平均得分爲2星。它會讓你的網站顯得不可靠,這通常對於包含評論的網站來說不是一件好事。出於這個原因,大多數星級評分系統也能夠顯示部分星星,使其更加精確。
你已經嘗試了什麼? – kero
爲什麼使用枚舉字段類型而不是int字段類型? –
我真的不知道。我只是擔心有人可能會嘗試使用1到5以外的數字發佈到我的表單。ENUM限制了我的信仰。但我是初學者,所以我可能不會這樣做。 – Mike