2

平均コースレーティングが最も高い上位3つのコースを返すmysqlクエリを作成しようとしています。評価とコースの2つのテーブルがあります。

評価表:

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つのコースを返す必要があります。どうすればこれができるのでしょうか?ありがとう

4

1 に答える 1

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でそれを参照してください。

于 2012-07-03T22:27:05.090 に答える