본문 바로가기
코딩테스트/SQL

[LeetCode][MySQL] Friend Requests II: Who Has the Most Friends

by 포뇨j 2024. 1. 3.

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

 

Friend Requests II: Who Has the Most Friends - LeetCode

Can you solve this real interview question? Friend Requests II: Who Has the Most Friends - Table: RequestAccepted +----------------+---------+ | Column Name | Type | +----------------+---------+ | requester_id | int | | accepter_id | int | | accept_date |

leetcode.com

 

select requester_id as id, count(accepter_id) as num
from (
    select requester_id, accepter_id
    from requestaccepted
    union
    select accepter_id as requester_id, requester_id as accepter_id
    from requestaccepted) a
group by requester_id
order by num desc limit 1

 

requester_id에 대한 accepter_id 개수, accepter_id에 대한 requester_id 개수 모두 고려해야 하기 때문에 union을 이용했다.

 

처음에는 requester_id와 accepter_id를 키로 해서 join하는 방식으로 풀었는데,

그렇게 하니 accepter_id에는 있으나 requester_id에는 없는 id가 누락되는 문제가 발생했다.

accepter_id가 누락되지 않도록 requester_id로 변환해서 union했다.

 

union all을 이용하면 좀더 간결하게 풀 수 있을것 같다.