我需要以下列方式在mysql中找到排名

时间:2017-02-26 20:34:56

标签: mysql

如果有重复,则要采取最高重复次序。 例如:

Value - Rank
-----------
10    - 1
20    - 3
20    - 3
30    - 5
30    - 5
40    - 6
50    - 7

20位于第2和第3位,因此排名为3; 30位于第4和第5位,因此等级为5等

1 个答案:

答案 0 :(得分:2)

select t3.value, maxrank
from your_table t3
join
(
    select t1.value, max(t2.rank) as maxrank
    from your_table t1
    join
    (
        select value, @rank := @rank + 1 as rank
        from your_table
        cross join (select @rank := 0) r
        order by value
    ) t2 on t1.value = t2.value
    group by t1.value
) t4 on t3.value = t4.value