我有一个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中完成这样的事情?
谢谢!
答案 0 :(得分:2)
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
这是有效的,因为SUM(a.goals > b.goals) + 1
是所有绑定玩家的最低等级,而SUM(a.goals >= b.goals)
是最高等级。因此,这可以平均范围的两端来获得分数。