一、题目描述:614. 二级关注者
SQL架构
在 facebook 中,表
follow
会有 2 个字段: followee, follower ,分别表示被关注者和关注者。请写一个 sql 查询语句,对每一个关注者,查询他的关注者数目。
比方说:
+-------------+------------+ | followee | follower | +-------------+------------+ | A | B | | B | C | | B | D | | D | E | +-------------+------------+应该输出:
+-------------+------------+ | follower | num | +-------------+------------+ | B | 2 | | D | 1 | +-------------+------------+解释:
B 和 D 都在在 follower 字段中出现,作为被关注者,B 被 C 和 D 关注,D 被 E 关注。A 不在 follower 字段内,所以A不在输出列表中。
注意:
被关注者永远不会被他 / 她自己关注。
将结果按照字典序返回。
二、解题思路
1、select distinct b.follower as follower, a.num from (select c.followee ,count(distinct c.follower) as num from follow as c group by c.followee) as a join follow as b on a.followee=b.follower order by a.followee
2、
select f1.follower, count(distinct f2.follower) as num
from follow f1
inner join
follow f2
on f1.follower = f2.followee
group by f1.follower
order by f1.follower;