0

我有一个系统,您可以通过猜测好结果来获得积分。当你得分最高时,你必须是第一名。问题是我如何才能排名,所以得分最高的人将成为第一名,下一个人将成为第二名,依此类推。

例子:

    ID积分排名
  -------------------------
    1 | 1000 | 1
    2 | 900 | 2
    3 | 500 | 5
    4 | 700 | 4
    5 | 800 | 3

谢谢!

4

1 回答 1

0

假设您有一个包含两个表的数据库:第一个列出用户,第二个列出通过问题获得的分数(问题来自第三个表,尽管我将在下面显示它并不重要)。

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 回答