跳到主要内容

602.好友申请 II :谁有最多的好友

序号题目难度
602题目链接中等

题目大意​

编写解决方案,找出拥有最多的好友的人和他拥有的好友数目。

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

RequestAccepted 表:

Column NameType
requester_idint
accepter_idint
accept_datedate

(requester_id, accepter_id) 是这张表的主键(具有唯一值的列的组合)。 这张表包含发送好友请求的人的 ID ,接收好友请求的人的 ID ,以及好友请求通过的日期。

示例​

输入​

RequestAccepted 表:

requester_idaccepter_idaccept_date
122016/06/03
132016/06/08
232016/06/08
342016/06/09

输出​

idnum
33

解释​

编号为 3 的人是编号为 1 ,2 和 4 的人的好友,所以他总共有 3 个好友,比其他人都多。

进阶​

在真实世界里,可能会有多个人拥有好友数相同且最多,你能找到所有这些人吗?

参考答案​

SELECT
id, visit_date, people
FROM
stadium
WHERE
3 <= (
SELECT COUNT(s.people)
FROM stadium AS s
WHERE
s.people >= 100
AND s.id >= stadium.id
AND s.id <= stadium.id+2
)
OR
3 <= (
SELECT COUNT(s.people)
FROM stadium AS s
WHERE
s.people >= 100
AND s.id >= stadium.id-1
AND s.id <= stadium.id+1
)
OR
3 <= (
SELECT COUNT(s.people)
FROM stadium AS s
WHERE
s.people >= 100
AND s.id >= stadium.id-2
AND s.id <= stadium.id
)
;