基于多个条件的排名

时间:2019-07-27 19:32:35

标签: mysql

我正在基于自己的计算(性能等级,搏击等级等)创建MMA(体育)排名系统。使用“战斗机”表(包含有关战斗机的所有信息),战斗(包含所有战斗)和事件(包含有关所有事件的信息)进行计算。

计算是基于这些表中的数字进行的,但是在如何使用RANK进行实现方面我没有取得任何成功-我也希望将排名数字插入fighters表的“ fighterrank”列中。

我尝试了几种方法,但是使用我的计算时,排名数字无法正确显示。一切计算正确,但排名数字非常随机。

SELECT id,firstname,lastname, wins, weight, losses, gender, Round(((avg(indrating)*13) + (avg(Fightrating)*5) + (avg(fights.stars)) * 20) / 2,2) + (SUM(res= 'W')*3 - SUM(res = 'L')*3) as Rating,
@rn := @rn + 1 as 'Rank'
from fighters
JOIN fights ON fights.wfighter = fighters.id
JOIN event E ON E.event_id = fights.event_id,
(SELECT @rn := 0 ) r
where fighters.weight = 'HW' and fighters.gender ='M'
GROUP BY fighters.id
order by Rating DESC LIMIT 50;

上面的代码显示了如何计算战斗机个人等级-并正确显示。但是排名数字完全不对。似乎每个排名数字都是随机的,从上到下。

我还要在fighters.fighterrank列中插入/更新正确的排名编号。

有什么建议吗?

0 个答案:

没有答案