2012-07-03 43 views
2

我想写一个mysql查询返回具有最高平均课程评级的前3个课程。我有两张表,评分和课程。MySQL获得顶部平均条目

的评分表:

courseId rating 
    1   6  
    2   2   
    1   4 
    2   5 
    3   3 
    4   0 
    6   0 

的课程表:

courseId  cnum  cname 
    1   100   name1 
    2   112   name2 
    3   230   name3 
    4   319   name4 
    5   122   name5 
    6   320   name6 

我需要返回前3个疗程具有最高的平均评级。任何想法我可以做到这一点?谢谢

回答

3
SELECT Courses.* 
FROM Courses NATURAL JOIN (
    SELECT courseId, AVG(rating) avg_rating 
    FROM  Ratings 
    GROUP BY courseId 
    ORDER BY avg_rating DESC 
    LIMIT 3 
) t 

请参阅sqlfiddle

+0

这很棒!谢谢。 – ewein