我有一个看起来像这样的MySQL表:
GOALS
------------------------
PLAYER | GOALS
------------------------
001 | 30
002 | 25
003 | 25
004 | 20
我希望有一个基于等级的计分系统,该系统可以为平局提供半分。在上面的示例中,它应如下所示:
GOALS
-----------------------------------
PLAYER | GOALS | SCORE
-----------------------------------
001 | 30 | 4
002 | 25 | 2.5
003 | 25 | 2.5
004 | 20 | 1
如果是三路平局:
GOALS
-----------------------------------
PLAYER | GOALS | SCORE
-----------------------------------
001 | 30 | 5
002 | 25 | 3
003 | 25 | 3
004 | 25 | 3
005 | 20 | 1
这样的事情如何在mySQL中完成?
谢谢!
最佳答案
SELECT a.player, a.goals, (SUM(a.goals > b.goals) + 1 + SUM(a.goals >= b.goals))/2 AS score
FROM goals a
CROSS JOIN goals b
GROUP BY player
DEMO
这是可行的,因为
SUM(a.goals > b.goals) + 1
是所有并列玩家的最低排名,而SUM(a.goals >= b.goals)
是最高排名。因此,这将平均范围的两端以获得分数。