顺序排名问题
思路一:
排序的方法:两张表比较,在表1中取分数1,去表2中分数2逐个比较,取出分数2 ≥ 分数1,并distinct去重后计数,就是分数1的排名。
select a.score,(select count(distinct b.score) from Score b where b.score >= a.score )
from Score a
order by score desc
思路2:
用 rank() over 函数
rank() over:
排名相同的两名是并列,但是占两个名次,1 1 3 4 4 6这种
dense_rank() over:
排名相同的两名是并列,共占一个名词,1 1 2 3 3 4这种
row_number() over:
这个函数不需要考虑是否并列,哪怕根据条件查询出来的数值相同也会进行连续排名 1 2 3 4 5
select score,(dense_rank() over (order by score desc)) as 'rank'
from Scores
作者:johnbear007
链接:https://leetcode-cn.com/problems/rank-scores/solution/fen-cheng-liang-ge-bu-fen-xie-hui-rong-yi-hen-duo-/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
本文来自博客园,作者:Widereye,转载请注明原文链接:https://www.cnblogs.com/YH-shjd-senvn/p/15883096.html