ユーザーの各イベントの評価を格納するMYSQLテーブルがあります。イベントテーブルのevent_ratingには1〜10が格納されています。どのような私が見つけようとしていることは、このような投票や評価の数に基づいて、最高の正確な評価です:MYSQL評価アルゴリズム
SELECT
c.userid,
c.user_name,
COUNT(d.event_rating) AS votesCount,
AVG(d.event_rating) AS votesAvg,
SUM(d.event_rating) AS tsum,
COUNT(d.event_rating)*AVG(d.event_rating)/COUNT(d.event_rating) as totalRating
FROM events d JOIN users c ON d.userid = c.userid WHERE (d.userid = '2') GROUP BY d.userid ORDER BY totalRating DESC
私は、ユーザーのための2件のダミー評価、10と5と他の格付けとの1を追加しました。
結果は以下の通りです:
userid user_name votesCount votesAvg tsum totalRating
2 Rahul Khanna 2 7.5000 15 7.50000000
は、正確な、と私はそれが正しい計算だということですか?
--- EDIT ---
がCOUNT(d.event_rating)*AVG(d.event_rating) as totalRating
userid user_name votesCount votesAvg tsum totalRating
1 Rita Agnihotri 9 4.8889 44 44.0000
4 Roger Myers 6 3.5000 21 21.0000
2 Rahul Khanna 2 7.5000 15 15.0000
3 Daniel Springs 4 3.5000 14 14.0000
5 Chun Tanakat 3 3.0000 9 9.0000
を使用した
COUNT(d.event_rating)*AVG(d.event_rating)/COUNT(d.event_rating) as totalRating
userid user_name votesCount votesAvg tsum totalRating
2 Rahul Khanna 2 7.5000 15 7.50000000
1 Rita Agnihotri 9 4.8889 44 4.88888889
3 Daniel Springs 4 3.5000 14 3.50000000
4 Roger Myers 6 3.5000 21 3.50000000
5 Chun Tanakat 3 3.0000 9 3.00000000
を使用して、いくつかのより多くの結果
を投稿
--- MORE ---
私の代わりに以下を使用する必要がありますか。私は必要なもの
COUNT(d.event_rating)*AVG(d.event_rating)/10 as totalRating
も同様に考慮votesCountを置くと評価は1から10までの間でなければならないこと、合計の評価を計算するための正確な方法です。
---詳細---
は、私は1人のテーブルのユーザー別のイベントがあり、ユーザーは新しいイベントを追加して、それらのイベントを評価することができます。イベントテーブルには、eventID、userid、event_ratingカラムがあります。したがって、各イベントは、ユーザーが作成したイベントの評価を保持できます。私が望むのは、すべてのイベントの評価を計算してそのユーザーの最大(合計)評価を得ることです。ユーザーが作成したイベントの数に関わらず、合計の評価が1から10の間になり、10を超えないようにします。それは可能ですか?解決策やアイデアがない場合は?
おかげで読んでください:)
さらに詳しい情報と結果で私の質問が更新されました。 – Zubair1
数学的にも問題は同じです: 'COUNT(d.event_rating)* AVG(d.event_rating)/COUNT(d.event_rating)as totalRating'は' AVR(d.event_rating)as totalRating'と同じです。 * b)/ a'は 'b'です。 –
私の解決策は何か分かりません。より明確にするために、私が達成しようとしていることについては、私の質問をより詳細に更新しました。 – Zubair1