按类别排名的玩家

时间:2018-02-09 13:21:29

标签: mysql

想象一下具有以下结构的Player表: PlayerId, Date, Kills, Gold, ClassId

我需要按班级排名。

"全球"排名很好(我来自question我已经制作好了),就像这样:

SET @rownumber := 0;
SET @month := 0;

SELECT pla.event_date, 
  @rownumber := IF(@month=MONTH(pla.event_date), @rownumber + 1, 1) AS rank, 
  @month := MONTH(pla.event_date) AS month, pla.kills, pla.player_id
FROM player AS pla
INNER JOIN classes AS cla ON cla.class_id = pla.class_id
WHERE pla.event_date >= '2017-09-01' AND pla.event_date <= '2017-12-31'
ORDER BY MONTH(pla.event_date), pla.kills DESC

但如果排名第一的全球是骑士而第二位是法师,那么当我为法师过滤时,他将成为第一位。 我真的花了一些时间来做这件事。

有人可以帮助我吗?

编辑:第一个匹配,但当我执行一个只有一个订单的检查查询时,其他玩家都有误导性的位置。

我正在使用此查询来检查:

SELECT pla.player_id, pla.kills
FROM player pla
INNER JOIN classes AS cla ON cla.class_id = pla.class_id
WHERE MONTH(pla.event_date) = 9
ORDER BY pla.event_date, pla.kills DESC

这告诉我,ID为7487的玩家是第44位的法师。

但是当我使用pla.class_id = 3(3 = mage)过滤的第一个查询(上面的全局查询)时,结果是6(应该是44)。

0 个答案:

没有答案