Leetcode 練習 - 1729: Find Followers Count - SQL 解法解析
📌 前言
在社交媒體應用程式中,計算每位用戶的粉絲數是一個常見的需求,而這道 SQL 題目 Leetcode 1729: Find Followers Count 正是考察這個概念。這題主要測試 GROUP BY 和 COUNT() 聚合函數的應用,適合 SQL 初學者練習。本文將解析這題的解法,並探討進階做法。
📝 題目解析
🔹 題目要求
- 給定
Followers
資料表,該表包含user_id
和follower_id
,表示follower_id
是user_id
的粉絲。 - 計算每位
user_id
擁有的粉絲數量。 - 結果需按照
user_id
升序排列。
🔹 輸入範例
1 | +---------+-------------+ |
🔹 預期輸出
1 | +---------+----------------+ |
🔹 解釋
user_id = 0
的粉絲有{1}
,共 1 位user_id = 1
的粉絲有{0}
,共 1 位user_id = 2
的粉絲有{0, 1}
,共 2 位
💡 SQL 解法
這題其實題目很簡單
🔹 解法 1:使用 GROUP BY
和 COUNT()
這題的核心解法是使用 GROUP BY 來將 user_id
進行分組,並計算 follower_id
的數量。
✅ SQL 語法
1 | SELECT |
📌 解法解析
- **
GROUP BY user_id
**:對user_id
進行分組,每個user_id
是唯一的一行。 - **
COUNT(follower_id)
**:計算follower_id
的數量,即該user_id
的粉絲數。 - **
ORDER BY user_id ASC
**:按照user_id
由小到大排序,符合題目要求。
🔹 時間與空間複雜度分析
- **時間複雜度:O(N)**(遍歷整個
Followers
表一次) - **空間複雜度:O(1)**(結果集大小與
user_id
數量成正比)
🔍 進階討論
🔹 如果 Followers
沒有某個 user_id
,該怎麼處理?
- 若
Followers
表沒有某個user_id
,代表該用戶 沒有任何粉絲,但這題沒要求回傳0
,所以不需要LEFT JOIN
。 - 但如果題目要求 **所有用戶都應該出現在結果中,即使沒有粉絲數也要顯示
0
**,可以使用LEFT JOIN
。
✅ 處理沒有粉絲的用戶 (LEFT JOIN
)
1 | SELECT |
這樣的作法確保了即使該 user_id
沒有粉絲,也會出現在結果中,粉絲數為 0。
🎯 總結
這道 SQL 題目考察 GROUP BY 和 COUNT() 兩個 SQL 聚合函數的應用。
📌 核心 SQL
1 | SELECT |
📌 進階解法
- 如果用戶沒有粉絲但仍需出現在結果中 ➝ 使用
LEFT JOIN
- Python Pandas 版 ➝ 使用
groupby().size()
🎯 適合讀者
✅ SQL 初學者:學習 GROUP BY
和 COUNT()
的基礎用法
✅ 資料分析師:透過 SQL/Pandas 分析社群數據
✅ 軟體工程師:優化社群媒體應用的粉絲數查詢
希望這篇文章能幫助你理解 SQL 聚合函數的應用!🚀
本部落格所有文章除特別聲明外,均採用CC BY-NC-SA 4.0 授權協議。轉載請註明來源 Nalson!
評論
ValineDisqus