题目
建表语句
Create table If Not Exists Scores (id int, score DECIMAL(3,2))
Truncate table Scores
insert into Scores (id, score) values ('1', '3.5')
insert into Scores (id, score) values ('2', '3.65')
insert into Scores (id, score) values ('3', '4.0')
insert into Scores (id, score) values ('4', '3.85')
insert into Scores (id, score) values ('5', '4.0')
insert into Scores (id, score) values ('6', '3.65')
解题思路
rank() over:成绩相同的两名是并列
dense_rank() over:成绩并列,下一位并不空出所占的名次。[dense:密集的 密集联想连续]
row_number() over: 不考虑是否并列,进行连续排名
SQL代码
select Score, dense_rank() over(order by Score desc) 'Rank'
from Scores