0

我正在建立一个锦标赛系统,需要根据两个标准对团队进行排序:

  1. 积分(连胜 3 局得 2 分)
  2. 游戏差异(游戏赢 - 输)

现在我有一个表格列用于积分,一个用于单场胜利,一个用于单场失利。

我从按点排序的数据库中获取结果(ORDER BY points DESC)。问题在于个人排名。如果 A 队和 B 队的积分相同,但 B 队的胜场数和负数场数之差更高,则 B 队的排名将高于 A 队。

由于所有比赛不会在同一时间进行,而且有些球队可能会落后于他们的日程安排,因此完全可能的情况是,一支球队的胜场比另一支球队多,但差距更大。

现在我能想出的唯一解决方案如下:

  1. 从数据库中获取数据(按点排序)
  2. 计算每个点值出现的次数(例如:9pts.x2、7pts.x5...)
  3. 根据步骤 2 制作所需的数组数量。
  4. 再次根据点值将数据排序到这些数组中。
  5. 如果数组的长度大于 1,则根据赢局和输局之间的差异对其进行排序。
  6. 打印最终结果。

这对我来说似乎非常低效。有更好的想法吗?

4

1 回答 1

1

这将起作用:

select name, wins, losses, points, (wins - losses) as "diff"
from teams
order by points desc, diff desc

演示:http ://sqlfiddle.com/#!2/4ea97/1

于 2013-09-04T19:15:55.430 回答