题目
下图是"班级"表中的内容,记录了每个学生所在班级,和对应的成绩。
题目要求
现在需要按成绩来排名,如果两个分数相同,那么排名要是并列的。
正常排名是1,2,3,4,但是现在前3名是并列的名次,排名结果是:1,1,1,2。
【解题思路】
1.涉及到排名问题,可以使用窗口函数(rank, dense_rank, row_number)
2.专用窗口函数rank, dense_rank, row_number有什么区别呢?
select *,
rank() over (order by 成绩 desc) as ranking,
dense_rank() over (order by 成绩 desc) as dese_rank,
row_number() over (order by 成绩 desc) as row_num
from 班级
原文连接:
https://leetcode-cn.com/problems/rank-scores/solution/tu-jie-sqlmian-shi-ti-jing-dian-pai-ming-wen-ti-by/