LeetCode数据库178

题目链接

https://leetcode-cn.com/problems/rank-scores/

关于窗体函数的用法

下面三个窗体函数的例子基于这个前提:如果现在有五个分数:9、9、8、7、6。

  1. rank():排名为相同时记为同一个排名, 所有排名都参与总排序。排名后为:1 1 3 4 5

  2. 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():相当于每一行数据一个窗口, 对数据进行比较

  3. 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;
原文地址:https://www.cnblogs.com/OFSHK/p/14646504.html