Leetcode602. 好友申请 II :谁有最多的好友(中等)

在社交网络(比如,脸书、推特)上,人们互相发送和接收好友请求。

request_accepted表包含好友请求的相关数据,requester_id 和 accepter_id 都是某位用户的id。

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

注意:

只有1位用户好友数最多。
好友请求只可以接受一次,就是说不会有重复记录。
说明:
id是’3’的用户好友数最多,总共有3位好友,他们id分别是’1’, ‘2’,‘4’。

审题
加好友是相互的 1加了2好友 1和2同时增加1个好友
所以对requester_id分组统计数量 再对accepter_id分组统计数量 然后对应相加就可以得到每个id的好友个数
但存在一个问题 对于这个例子 左表是 1,2,3 三个id 右边是 2,3,4三个id
连接不太好做

看看有没别的思路 既然是要加起来 那其实把requester_id、accepter_id 合并后一起统计就可以了 用union

SELECT column_list
UNION [DISTINCT | ALL]
SELECT column_list
即使不用DISTINCT关键字,UNION也会删除重复行。ALL不会删除重复行。

先合并

(select requester_id from request_accepted as R1)
union all
(select accepter_id from request_accepted as R2)

对合并后的数据统计

select tmp.rid, count(*) as num
from ((select requester_id as rid from request_accepted as R1)
union all
(select accepter_id as rid from request_accepted as R2)) as tmp 
group by tmp.rid
order by num
limit 0,1;

你可能感兴趣的:(Leetcode602. 好友申请 II :谁有最多的好友(中等))