天天看點

LeetCode MySQL 602. 好友申請 II :誰有最多的好友(union all)

文章目錄

    • 1. 題目
    • 2. 解題

1. 題目

在 Facebook 或者 Twitter 這樣的社交應用中,人們經常會發好友申請也會收到其他人的好友申請。

表 request_accepted 存儲了所有好友申請通過的資料記錄,其中, requester_id 和 accepter_id 都是使用者的編号。

| requester_id | accepter_id | accept_date|
|--------------|-------------|------------|
| 1            | 2           | 2016_06-03 |
| 1            | 3           | 2016-06-08 |
| 2            | 3           | 2016-06-08 |
| 3            | 4           | 2016-06-09 |           

複制

寫一個查詢語句,求出誰擁有最多的好友和他擁有的好友數目。對于上面的樣例資料,結果為:

| id | num |
|----|-----|
| 3  | 3   |           

複制

注意:

保證擁有最多好友數目的隻有 1 個人。

好友申請隻會被接受一次,是以不會有 requester_id 和 accepter_id 值都相同的重複記錄。

解釋:

編号為 ‘3’ 的人是編号為 ‘1’,‘2’ 和 ‘4’ 的好友,是以他總共有 3 個好友,比其他人都多。

進階:

在真實世界裡,可能會有多個人擁有好友數相同且最多,你能找到所有這些人嗎?

來源:力扣(LeetCode)

連結:https://leetcode-cn.com/problems/friend-requests-ii-who-has-the-most-friends

著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

2. 解題

# Write your MySQL query statement below
select id, count(*) num
from 
(
    select requester_id id
    from request_accepted
    union all # union 會去重,all 不會
    select accepter_id
    from request_accepted
) t
group by id
order by num desc
limit 1           

複制