在我的应用程序中,我将用户提供的评论存储到mysql
。
现在我必须根据评论找到评分。我存储的评论如“食品质量,服务,氛围,价值”,所有值都在1到5之间。
如何根据这些值找到评分。
我的表结构是
FoodQuality Service Atmosphere Value RestaurantId 1 3 2 4 1
答案 0 :(得分:1)
SQL中有一些天真的解决方案,但我建议您阅读本文:http://www.evanmiller.org/how-not-to-sort-by-average-rating.html并尝试直接在代码中的某处实现此类评级。
那说一个天真的解决方案可能是说4和5是正面的(例如):
<强>伪代码:强>
myrating = (SELECT rating FROM reviews
WHERE rating == 4 OR rating == 5) AS positivratings / (SELECT * FROM reviews) AS totalrating
答案 1 :(得分:1)
假设您希望按照每个餐馆ID进行评分,并且因为您没有通过评分来指明您的意思
SELECT RestaurantId
, SUM(FoodQuality+Service+Atmosphere+Value) rating1 -- the sum of total rating
, AVG(FoodQuality+Service+Atmosphere+Value) rating2 -- the average of total rating, max 20
, AVG((FoodQuality+Service+Atmosphere+Value)/4) rating3 -- the average of average rating, max 5
FROM table
GROUP BY RestaurantId
答案 2 :(得分:0)
给我们一些表结构。您可以使用[AVG()][1]
功能。有关详细信息,请提供表格结构。
SELECT products.*, AVG(r.value) AS product_rating FROM products p LEFT JOIN ratings r ON p.id = r.product_id GROUP BY p.id
考虑到products
是您评分的表格,ratings
是您保留评分的表格,ratings.value
是包含评级值的字段。
答案 3 :(得分:0)
您必须向我们提供表格详细信息,例如每个用户可能有评级,然后您必须使用group by子句和AVG()mysql函数来查找每个用户的评级。