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


