179. 编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。
180. 请注意,平分后的下一个名次应该是下一个连续的整数值。
181. 换句话说,名次之间不应该有“间隔”。
+----+-------+| Id | Score |+----+-------+|1|3.50||2|3.65||3|4.00||4|3.85||5|4.00||6|3.65|+----+-------+
例如,根据上述给定的 Scores 表,你的查询应该返回(按分数从高到低排列):
+-------+------+| Score | Rank |+-------+------+|4.00|1||4.00|1||3.85|2||3.65|3||3.65|3||3.50|4|+-------+------+
select a.Score ,(select count(distinct b.Score)from Scores b where b.Score>=a.Score)as Rank
from Scores a order by Score desc
或
# Write your MySQL query statement below
select Score ,Rank from(select Score,@CUR:=IF(@PREV=Score,@CUR+0,@CUR:=@CUR+1)as Rank,
@PREV:=Score from Scores,(select @CUR:=0,@PREV:=NULL) r ORDER by Score desc) s