-4

CommentRatingの外部キーを保持するテーブルがありますDrinkId。それぞれの平均評価を取得しようとしてDrinkIdいます。それに加えて、評価が最も高い上位3つのdrinkIdを表示したいと思います。

commentRating  drinkID 

     9           7

     9           4

     8          11

     8           7

     7           4

     6           4

     6          11

これが私がこれまでに持っているSQLですが、それを変更する方法がわかりません。

Select TOP(3)(AVG(commentRating)),DISTINCT(drinkID)
FROM  Comment order by commentRating desc

評価を平均し、上位3つの評価の飲み物を選択して、SQLで返すにはどうすればよいですか?

4

2 に答える 2

5

GROUP BY次の方法で結果を取得する必要がありますdrinkID

SELECT TOP 3 AVG(commentRating), drinkID
FROM Comment
GROUP BY drinkID
ORDER BY AVG(commentRating) DESC

の詳細については、お気に入りの SQL ドキュメントを読むことをお勧めしますGROUP BY。T-SQL の場合、MSDN の GROUP BY (Transact-SQL)です。

AVG集計関数です。繰り返しますが、集計関数に関するドキュメントを読むことをお勧めします。T-SQL では、MSDN ライブラリにもあります。

于 2013-01-10T13:15:43.060 に答える
3

T-SQL の場合:

select TOP 3 * from
(
select drinkID,avg(commentRating) avgCom 
from Comment group by drinkID
) t order by avgCom DESC

MySQL の場合、LIMITキーワードを使用します。

于 2013-01-10T13:17:13.213 に答える