题目

image.png

建表语句

  1. Create table If Not Exists Scores (id int, score DECIMAL(3,2))
  2. Truncate table Scores
  3. insert into Scores (id, score) values ('1', '3.5')
  4. insert into Scores (id, score) values ('2', '3.65')
  5. insert into Scores (id, score) values ('3', '4.0')
  6. insert into Scores (id, score) values ('4', '3.85')
  7. insert into Scores (id, score) values ('5', '4.0')
  8. 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