2010-01-14 35 views
1

我有精密组件表:file_id的,等级,user_id说明查找平均评级为每个项目

有每一个USER_ID等级,所以有可能与单张很多等级(0-5级) file_id的。

我想查找每个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

回答

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
SELECT `file_id`, AVG(`rating`) as a FROM `table` 
GROUP BY `file_id` ORDER BY a DESC LIMIT 5 

替换 '表' 与表的名称。

+0

我编辑了代码示例,用反引号代替单引号。 :-) – 2010-01-14 01:32:34

+0

谢谢!我会知道下一次。 – danben 2010-01-14 01:33:43