알고리즘

[SQL]LeetCode Friend Requests II: Who has the Most Friends

truezero 2024. 1. 21. 18:57

✅ 코드

-- FROM절 서브쿼리 사용하면 항상 alias 지정해줘야 함
WITH ACC AS (
    SELECT requester_id AS id
        , COUNT(DISTINCT accepter_id) AS num
    FROM RequestAccepted
    GROUP BY requester_id
), REQ AS (
    SELECT accepter_id AS id
        , COUNT(DISTINCT requester_id) AS num
    FROM RequestAccepted
    GROUP BY accepter_id
), T1 AS (
    SELECT *
    FROM ACC
    UNION ALL
    SELECT *
    FROM REQ
), T2 AS (
    SELECT id
        , SUM(num) AS num
    FROM T1
    GROUP BY id
)

SELECT *
FROM T2
WHERE num = (SELECT MAX(num) FROM T2)

WITH문으로 테이블을 여러개 생성한 후에 WHERE문 서브쿼리를 통해 원하는 데이터를 추출했습니다.