0
点赞
收藏
分享

微信扫一扫

MyBatis动态SQL

寒羽鹿 2023-05-22 阅读 61

数据导入:

Create table If Not Exists RequestAccepted (requester_id int not null, accepter_id int null, accept_date date null);
Truncate table RequestAccepted;
insert into RequestAccepted (requester_id, accepter_id, accept_date) values ('1', '2', '2016/06/03');
insert into RequestAccepted (requester_id, accepter_id, accept_date) values ('1', '3', '2016/06/08');
insert into RequestAccepted (requester_id, accepter_id, accept_date) values ('2', '3', '2016/06/08');
insert into RequestAccepted (requester_id, accepter_id, accept_date) values ('3', '4', '2016/06/09');

在 Facebook 或者 Twitter 这样的社交应用中,人们经常会发好友申请也会收到其他人的好友申请。

RequestAccepted 表:

 

写一个查询语句,找出拥有最多的好友的人和他拥有的好友数目。

生成的测试用例保证拥有最多好友数目的只有 1 个人。

查询结果格式如下例所示。

示例:

解题思路:

with cte as
(select
requester_id as id
from RequestAccepted
union all
select
accepter_id
from RequestAccepted)

# 子查询筛选(group by having count >= all
select
id,
count(*) as num
from cte
group by id
having count(*) >= all(select count(*) from cte group by id)

# order by limit 1
select
id,
count(*) as num
from cte
group by id
order by num desc
limit 1

# 窗口函数
select
id,num
from
(select
id,
count(*) as num,
dense_rank() over(order by count(*) desc) as rnk
from cte
group by id) t
where rnk=1
;

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/friend-requests-ii-who-has-the-most-friends
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

举报

相关推荐

0 条评论