21 分数排名
Opened this issue · 0 comments
astak16 commented
题目
查询实现分数排名,如果两个分数相同,这排名相同。
create table scores (
id int,
score double
)
insert into scores values(1,3.50),(2,3.65),(3,4.00),(4,3.85),(5,4.00),(6,3.65)
SQL:方法一
select score,
case
when @pre=score then @rank:=@rank
when @pre:=score then @rank:=@rank + 1
end as 排名
from scores, (select @pre=null, @rank:=0) as init
order by score desc;
解析
- 按照
score
进行降序排列 - 使用
case ... when ... then ... end
算出排名
SQL:方法二
select score, dense_rank() over(order by score desc) as 排名 from scores;
解析
使用 dense_rank()
排名函数