602.好友申请 II :谁有最多的好友
| 序号 | 题目 | 难度 |
|---|---|---|
| 602 | 题目链接 | 中等 |
题目大意
编写解决方案,找出拥有最多的好友的人和他拥有的好友数目。
生成的测试用例保证拥有最多好友数目的只有 1 个人。
RequestAccepted 表:
| Column Name | Type |
|---|---|
| requester_id | int |
| accepter_id | int |
| accept_date | date |
(requester_id, accepter_id) 是这张表的主键(具有唯一值的列的组合)。 这张表包含发送好友请求的人的 ID ,接收好友请求的人的 ID ,以及好友请求通过的日期。
示例
输入
RequestAccepted 表:
| requester_id | accepter_id | accept_date |
|---|---|---|
| 1 | 2 | 2016/06/03 |
| 1 | 3 | 2016/06/08 |
| 2 | 3 | 2016/06/08 |
| 3 | 4 | 2016/06/09 |
输出
| id | num |
|---|---|
| 3 | 3 |
解释
编号为 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
)
;