顺序排名问题

 

 

 

思路一:

排序的方法:两张表比较,在表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)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

 

posted @ 2022-02-11 14:33  Widereye  阅读(53)  评论(0编辑  收藏  举报