최대 1 분 소요

문제 링크

정답

WITH cte AS (
    SELECT 
        requester_id id,
        COUNT(*) num
    FROM RequestAccepted
    GROUP BY requester_id
    UNION ALL
     SELECT 
        accepter_id id,
        COUNT(*) num
    FROM RequestAccepted
    GROUP BY accepter_id
)

SELECT 
    id, SUM(num) num
FROM cte
GROUP BY id
ORDER BY 2 DESC
LIMIT 1;

✅ Point

  • request_id에서의 id 별 개수 + accepter_id에서의 id 별 개수
  • UNION ALL을 통해 중복 id 값 포함시키기

다른 풀이

  • 결국엔 두 column에 있는 특정 id의 개수를 구하면 됨
  • 즉, 두 column을 한 column으로 합치고 한 번에 count 수를 구하면 됨
    SELECT
      id, COUNT(id) num
    FROM (
      SELECT requester_id id FROM RequestAccepted
      UNION ALL
      SELECT accepter_id id FROM RequestAccepted
    ) t
    GROUP BY id
    ORDER BY num DESC
    LIMIT 1;