我正在尝试编写一个mysql查询来返回平均课程评分最高的前3个课程。我有两个表,评分和课程。
评级表:
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个课程。我有什么想法可以做到这一点?感谢
答案 0 :(得分: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上查看。