私はテーブルjackpot
を持っています。ユーザIDの場合はuid
、正解の場合はnright
です。ランクの位置に基づいてスコアを計算する
私は正しい答えでユーザーを選択してランク付けすることができますが、次に何がありますか?
SELECT
a1.uid,
a1.nright,
COUNT(a2.nright) AS rank
FROM
jackpot a1,
jackpot a2
WHERE
a1.nright < a2.nright
OR (
a1.nright = a2.nright
AND a1.uid = a2.uid
)
GROUP BY
a1.uid,
a1.nright
ORDER BY
a1.nright DESC,
a1.uid DESC
私は、自分の位置に応じて各ユーザーに与えるべきポイントの量を計算する必要があります。
トップ3のユーザMAX nright
のみがポイントを受信します。
合計ポイント=ユーザー数* 20。
最初の位置は、2番目 - 20%、3番目 - 10%の合計の70%になります。
ユーザー間で正しい回答が等しい場合、ポイントは均等に分割されます(50/50、33/33/33 ...)。
あなたが作る場合、あなたはまた、あなたのSQLのDMLとDDLを投稿した場合それは本当に参考になります[SQL Fiddle](http://sqlfiddle.com) –