Leet Code #602. Friend Requests II: Who Has the Most Friends
[ 문제상황 ]
팔로우 신청 아이디와 수락 아이디, 수락 시점이 나열되어 있는 테이블에서
각 id 별 최종 친구 수를 세어서 가장 친구 수가 많은 id와, 그 친구 수를 출력하는 문제
[ 해결방법 ]
requester_id 목록을 쭉 나열하고,
SELECT requester_id AS id
FROM RequestAccepted
accepter_id 목록도 쭉 나열한다.
SELECT accepter_id AS id
FROM RequestAccepted
그 다음 두 테이블을 UNION ALL로 이어주면 팔로우 신청 아이디와 수락 아이디가 한 컬럼에 쭉 나열된다.
여기서 ID 별로 횟수를 세어주면 (신청을 통해 생긴 친구 수) + (수락을 통해 생긴 친구 수) = (총 친구 수)를 구할 수 있다.
SELECT id, COUNT(*) AS num
FROM (
SELECT requester_id AS id
FROM RequestAccepted
UNION ALL
SELECT accepter_id AS id
FROM RequestAccepted
) friends_count
GROUP BY id
ORDER BY num DESC
LIMIT 1
Leet Code #1164. Product Price at a Given Date
Leet Code #1789. Primary Department for Each Employee
'Study > SQL' 카테고리의 다른 글
Window Function 예제 (0) | 2023.11.16 |
---|---|
SUB QUERY 예제 (0) | 2023.10.23 |
SQL : timestamp 다루기 (0) | 2023.10.17 |
SQL : Delete (0) | 2023.10.05 |
SQL : Update (0) | 2023.10.05 |