题目链接
https://leetcode-cn.com/problems/rank-scores/
关于窗体函数的用法
下面三个窗体函数的例子基于这个前提:如果现在有五个分数:9、9、8、7、6。
-
rank()
:排名为相同时记为同一个排名, 所有排名都参与总排序。排名后为:1 1 3 4 5
。 -
dense_rank() over (PARTITION BY xx ORDER BY xx [DESC])
:排名相同时记为同一个排名, 并且不参与总排序。排名后为:1 1 2 3 4
。-
dense_rank() over (order by xx [desc])
:如果不指定partition by的话:相当于所有行数据一个 partition, 数据进行区内排序 -
dense_rank()
:相当于每一行数据一个窗口, 对数据进行比较
-
-
row_number() over (over (PARTITION BY xx ORDER BY xx [DESC]))
:排名相同时记为下一个排名。排名后为:1 2 3 4 5
。
AC代码
select
Score,
dense_rank() over (order by Score desc) as 'Rank'
from
Scores;