0

良い結果を推測してポイントを獲得できるシステムがあります。最も多くのポイントを獲得したときは、ナンバー 1 になる必要があります。問題は、ポイントが最も多い人がナンバー 1 になり、次の人がナンバー 2 になるように、どのようにランク付けできるかということです。

例:

    IDポイントランク
  -------------------------
    1 | 1000 | 1
    2 | 900 | 2
    3 | 500 | 5
    4 | 700 | 4
    5 | 800 | 3

ありがとう!

4

1 に答える 1

0

2 つのテーブルを持つデータベースがあるとします。最初のテーブルにはユーザーが一覧表示され、2 番目のテーブルには質問によって獲得したポイントが一覧表示されます (質問は重要ではない 3 番目のテーブルから取得されますが、以下に示します)。

User
=====
Id
Name
(...)

Question
=====
Id
(...)

Answer
=====
UserId
QuestionId
PointsTaken

そこからランク付けするには、単純な SQL ステートメントを実行できます。

SELECT usr.Id, usr.Name, SUM(ans.PointsTaken)
  FROM User usr
  JOIN Answer ans ON ans.UserId = usr.Id
 GROUP BY usr.Id, usr.Name
 ORDER BY SUM(ans.PointsTaken) DESC

このように、あなたのランクは完了です。結果は、人物 ID、人物名、獲得したポイントの合計で、最大から最小の順に並べられます。これの次に、情報を表示するだけです。

于 2013-04-24T13:25:26.673 に答える