1

私は、ユーザーから与えられた最高の評価で果物の種類を評価しようとしています。

次の情報を使用して評価を送信するためだけに、Ratingsというフルーツテーブルがあります。

Fruit_id int
From_ID int
Rating int

今私は次のようなSQLコマンドを実行しようとしています

select From_ID, AVG(Rating) AS Rating FROM Ratings Group BY `Fruit_ID` ORDER by Rating DESC

ただし、これは機能しますが、フルーツを5と評価するユーザーが1人いる場合、オレンジを4と評価するユーザーが1000人いると、突然、リンゴの方が優れていると見なされます。

投票数を考慮に入れて、最も多くの投票が行われ、最も多くの投票が最初になるようにするにはどうすればよいですか。

4

2 に答える 2

2

この質問は、何よりも数式を微調整することに関するものです。

求めているのは評価ではなく人気のようです。これを行う簡単な方法は、平均評価に投票数を掛けることです。これについてはどうですか (構文が間違っていたらすみません。現在 SQL サーバーから離れています):

select From_ID, AVG(Rating) * COUNT(Rating) AS Rating FROM Ratings Group BYフルーツ_IDORDER by Rating DESC

この式では、1 の 1000 票は 5 の 1 票よりもはるかに高く評価されることに注意してください。

于 2010-06-23T02:17:53.503 に答える
0

投票数を選択して、それをユーザーに表示してみませんか。そうです、リンゴの5の1票は、全体で5になりますが、1票だけです。これにより、ユーザーは特定の評価がどれほど「人気がある」かを簡単に確認できます。

これは、私が間違っていなければ、今日のほとんどの5つ星評価システムがネット上でどのように機能するかです。

幸運を!

ニック

于 2010-06-23T02:23:41.007 に答える