题目难度
中等
题目描述
在 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不在输出列表中。
正确答案
SELECT followee AS follower,COUNT(DISTINCT follower) AS num
FROM follow f1
WHERE EXISTS (SELECT 1 FROM follow f2 WHERE f1.followee=f2.follower)
GROUP BY followee
DISTINCT 细节容易忘,数的关注者的时候记得去重,每个人被一个账号关注,只能算作一个人。(可能有关注后取关又关注的情况,都记录在了表中)
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/second-degree-follower