首页 > 试题广场 >

刷题通过的题目排名

[编程题]刷题通过的题目排名
  • 热度指数:113430 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
在牛客刷题有一个通过题目个数的(passing_number)表,id是主键,简化如下:
id number
1 4
2 3
3 3
4 2
5 5
6 4
第1行表示id为1的用户通过了4个题目;
.....
第6行表示id为6的用户通过了4个题目;
请你根据上表,输出通过的题目的排名,通过题目个数相同的,排名相同,此时按照id升序排列,数据如下:
id number t_rank
5 5 1
1 4 2
6 4 2
2 3 3
3 3 3
4 2 4

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

输入

drop table if exists passing_number;
CREATE TABLE `passing_number` (
`id` int(4) NOT NULL,
`number` int(4) NOT NULL,
PRIMARY KEY (`id`));

INSERT INTO passing_number VALUES
(1,4),
(2,3),
(3,3),
(4,2),
(6,4),
(5,5);

输出

5|5|1
1|4|2
6|4|2
2|3|3
3|3|3
4|2|4
select id,number,dense_rank()over(order by number desc) t_rank
from passing_number
发表于 2025-03-11 10:41:24 回复(0)
elect
    *,
    dense_rank() over (
        order by
            number desc
    ) t_rank
from
    passing_number
order by
    t_rank,
    id;

先用窗口函数获取刷题排名 ,再给排名排序,排序相同再按id升序排名
发表于 2025-01-07 15:16:59 回复(0)
select *,
dense_rank()over(order by number desc) t_rank
from passing_number
h好像不加id也能通过,是因为默认的时候自动根据id吧可能,如果id是降序那么后面必须加order by,各位大神帮忙解答一下?
发表于 2025-01-05 10:20:01 回复(0)
select
    id,
    number,
    dense_rank() over (order by number desc) t_rank
from passing_number
order by t_rank asc, id asc;
发表于 2024-06-05 21:01:56 回复(0)
set @i :=0;
set @q :=0;
set @p :=0;
set @j :=0;
select tt1.id,tt1.number,tt1.t_rank from (
select t1.id as id,
        t1.number as number,
        @i:=@j+1,
        @q :=t1.number,
        if(@q=@p,@i,@j := @j+1) as t_rank ,
        @p := @q
       from (select * from passing_number order by number desc) t1)tt1
这里运行不出来,但是我再我的mysql里可以

发表于 2024-03-29 17:12:34 回复(0)
select a.*,
(select count(distinct number) from passing_number where number>=a.number) t_rank 
from passing_number a
order by a.number desc;

发表于 2024-02-06 13:51:27 回复(0)
select
    id,
    number,
    dense_rank() over (
        order by
            number desc
    ) as t_rank
from
    passing_number
order by
    t_rank,
    id;

发表于 2023-10-24 20:04:56 回复(0)
# 请你根据上表,输出通过的题目的排名,通过题目个数相同的,排名相同,此时按照id升序排列,数据如下:

with dwd_data as (
select 
id,
number,
dense_rank()over(order by number desc) as t_rank
from passing_number
) 

select  
id,
number,
t_rank
from dwd_data
order by 3,1;

发表于 2023-09-13 11:00:29 回复(0)
select *,dense_rank()over(order by number desc) t_rank 
from passing_number 
order by t_rank,id
发表于 2023-08-16 16:28:52 回复(0)
排名函数
select
    id
    ,number
    ,dense_rank()over(order by number desc)  as t_rank
from 
    passing_number
order by
    t_rank

知识点:row_number不重复连续,rank重复不连续,dense_rank重复且连续
发表于 2023-05-25 10:57:26 回复(0)
SELECT 
    a.id, a.number, (
        SELECT 
            COUNT(DISTINCT b.number) 
        FROM 
            passing_number b
        WHERE 
            a.number <= b.number 
    ) t_rank 
FROM 
    passing_number a
ORDER BY
   t_rank ASC, a.id ASC;
发表于 2023-02-26 16:00:08 回复(0)
select id,number,
dense_rank() over(order by number desc) as rk
from passing_number;

发表于 2022-12-29 15:03:39 回复(0)
select id,number,dense_rank() over(order by number desc) as t_rank
from passing_number;

dense_rank()这个函数,学到了
发表于 2022-06-07 16:20:48 回复(0)
select *, dense_rank() over(order by number desc) as t_rank from (select * from passing_number order by number desc) s;

发表于 2022-06-04 19:52:42 回复(0)
select id, number, (select count(distinct p2.number) from  passing_number p2 
                    where p1.number <= p2.number
                   ) as t_rank
from passing_number p1 order by t_rank, id


子查询作为字段的用法,排名问题。
发表于 2022-05-25 07:50:51 回复(0)
select id,number,dense_rank() over (order by number desc) as t_rank from passing_number
order by t_rank asc,id asc 
发表于 2022-05-20 20:51:18 回复(0)
都8.0时代了,要技术进步- -

select
id,number,dense_rank() over(order by number Desc)
from passing_number
order by number desc


发表于 2022-05-16 10:09:34 回复(0)
select id,number,
dense_rank()over(order by number desc) as t_rank
from passing_number 
order by t_rank,id asc
;
发表于 2022-05-11 18:44:46 回复(0)
select *, dense_rank()over( order by number desc) t_rank
from passing_number

发表于 2022-04-18 14:51:27 回复(0)

问题信息

SQL
难度:
62条回答 4147浏览

热门推荐

通过挑战的用户

查看代码
刷题通过的题目排名