标签:note can another sele most ati count request mos
In social network like Facebook or Twitter, people send friend requests and accept others‘ requests as well.
Table request_accepted
holds the data of friend acceptance, while requester_id and accepter_id both are the id of a person.
| 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 |
Write a query to find the the people who has most friends and the most friends number. For the sample data above, the result is:
| id | num | |----|-----| | 3 | 3 |
Note:
Explanation:
Follow-up:
Algorithm
Being friends is bidirectional, so if one person accepts a request from another person, both of them will have one more friend.
Thus, we can union column requester_id and accepter_id, and then count the number of the occurrence of each person.
select requester_id as ids from request_accepted
union all
select accepter_id from request_accepted;
Note: Here we should use union all instead of union because union all will keep all the records even the ‘duplicated‘ one.
解法:
select ids as id, cnt as num from ( select ids, count(*) as cnt from ( select requester_id as ids from request_accepted union all select accepter_id from request_accepted ) as tbl1 group by ids ) as tbl2 order by cnt desc limit 1 ;
解法2:
select a.id, count(*) as num from (select requester_id as id from request_accepted union all select accepter_id as id from request_accepted) a group by id order by num desc limit 1
解法3:
select t2.Id as id, t2.num as num from ( select t1.Id, sum(cnt) as num from( select accepter_id as Id, count(*) as cnt from request_accepted group by accepter_id union all select requester_id as Id, count(*) as cnt from request_accepted group by requester_id) t1 group by t1.Id ) t2 order by t2.num DESC limit 1
[LeetCode] 602. Friend Requests II: Who Has Most Friend? 朋友请求 II: 谁有最多的朋友?
标签:note can another sele most ati count request mos
原文地址:https://www.cnblogs.com/lightwindy/p/9698975.html