【LeetCode刷题】数据库之中等题:178. 分数排名

题目:
在这里插入图片描述
解法1:使用dense_rank()函数,DENSE_RANK()是连续排序,即如果有两条记录重复,接下来是第二级别,比如:1 2 2 3。

扩展:相比下,还有rank()函数,RANK()是跳跃排序,即如果有两条记录重复,接下来是第三级别,比如:1 2 2 4。 还有一个row_number()函数,这个比较简单,无论什么,直接按数字排下来。

select Score,dense_rank() over(order by Score desc) as 'Rank'
from Scores;

解法2:用b表的每一个Score去跟a表的Score比较,计算每次比较b.Score大于等于a.Score的个数,最后根据Score倒序。

select a.Score,
(select count(distinct(b.Score)) from Scores b where b.Score>=a.Score) as 'Rank'
from Scores a
order by Score DESC;

▲解法1比解法2效率快很多,推荐使用解法1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值