1
我正在计算mysql中一些数据的spearmans排名相关性。为此,我需要按降序排列我的数据。我得到了这个工作,但是当2行具有相同的变量时,等级应该是2个或更多等级的平均值。 此处作为一例是与当前行列一些示例数据和预期的行列在mysql中获取多个排名的平均数
| id|var|rank|
| 8 | 1 | 1 |
| 2 | 2 | 2 | # rank should be 2.5
| 6 | 2 | 3 | # rank should be 2.5
| 4 | 3 | 4 |
| 5 | 4 | 5 |
| 1 | 5 | 6 |
| 3 | 6 | 7 | # rank should be 8
| 7 | 6 | 8 | # rank should be 8
| 9 | 6 | 9 | # rank should be 8
我的查询看起来是这样的现在:
SET @rownum := 0;
SET @rownum2 := 0;
SELECT rank_x.id, rank_x.var1, rank_x.rk_x
FROM
(SELECT id, @rownum := @rownum + 1 AS rk_x, var1
FROM sampledata order by var1 asc) as rank_x;
非常感谢,它的伟大工程!你所犯的唯一错误(我猜)是第四行的“@rn”。我认为它应该是“rn”。 无论如何,完美的解决方案! – Myrdox 2014-10-27 12:11:49
@Myrdox。 。 。固定。 – 2014-10-27 12:18:17