查找每个项目的评分平均值

时间:2010-01-14 01:09:47

标签: mysql

我有一个包含feilds的表:file_id,rating,user_id

每个user_id有一个评级,因此单个file_id可能有很多评级(以0-5为单位)。

我想找到每个file_id的平均评分,然后显示5个具有最高平均评级的file_id。

实际上我的SQL查询看起来像:

SELECT m.server_domain, m.original_name, m.type, m.title, m.views, 
    m.description, m.hash, AVG(mr.rating_scale5) as avg_rating_scale5 
FROM c7_media m, c7_storage s, c7_media_ratings mr 
WHERE s.public=1 AND m.storage_hash = s.hash AND m.hash = mr.media_hash
GROUP BY mr.media_hash

我该怎么做?

Zeeshan

2 个答案:

答案 0 :(得分:7)

file_id分组然后按平均顺序排序。切断所有低于前5名的记录。

SELECT 
    file_id, AVG(rating) as avg_rating 
FROM 
    table 
GROUP BY 
    file_id 
ORDER BY 
    avg_rating DESC 
LIMIT 5

答案 1 :(得分:1)

SELECT `file_id`, AVG(`rating`) as a FROM `table` 
GROUP BY `file_id` ORDER BY a DESC LIMIT 5

将'table'替换为您的表名。