用SQL查询查找评分?

时间:2011-06-30 05:49:13

标签: mysql sql rating

在我的应用程序中,我将用户提供的评论存储到mysql

现在我必须根据评论找到评分。我存储的评论如“食品质量,服务,氛围,价值”,所有值都在1到5之间。

如何根据这些值找到评分。

我的表结构是

FoodQuality Service Atmosphere Value RestaurantId 1 3 2 4 1

4 个答案:

答案 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函数来查找每个用户的评级。