我有一个系统,您可以通过猜测好结果来获得积分。当你得分最高时,你必须是第一名。问题是我如何才能排名,所以得分最高的人将成为第一名,下一个人将成为第二名,依此类推。
例子:
ID积分排名 ------------------------- 1 | 1000 | 1 2 | 900 | 2 3 | 500 | 5 4 | 700 | 4 5 | 800 | 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、人员姓名和总得分,从最大值到最小值排序。在此旁边,您只需要显示信息。