SQL63 刷题通过的题目排名

本文最后更新于:2022年4月9日 中午


题目描述

在牛客刷题有一个通过题目个数的(passing_number)表,id是主键,简化如下:

img

第1行表示id为1的用户通过了4个题目;…..第6行表示id为6的用户通过了4个题目;请你根据上表,输出通过的题目的排名,通过题目个数相同的,排名相同,此时按照id升序排列,数据如下:

img

id为5的用户通过了5个排名第1,id为1和id为6的都通过了2个,并列第2

输入描述

输出描述

题解

1
2
3
4
5
6
select id, number, dense_rank() over(order by number desc) as rank
from passing_number order by number desc, id asc;

select a.id, a.number,(select count(distinct b.number) from passing_number as b
where a.number <= b.number) from passing_number as a
order by a.number desc, a.id asc;

参考文章:

参考 [SunburstRun] 的解答