2012-07-03 45 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