在 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不在輸出列表中。
?
注意:
被關注者永遠不會被他 / 她自己關注。
將結果按照字典序返回。
思路:分組,查詢出現次數,條件是在follower中出現過。(注意次數去重)
select followee as follower,count(distinct follower) as num
from follow
where followee in (select follower from follow)
group by followee
?