SQL 코드카타
문제 링크
처음에는 cross join을 써서
카테시안 곱을 만들고 조건을 적용하려고 했는데,
이 방법은 Relation 테이블의 사이즈가 큰 경우
연산시간을 많이 잡아먹을 수 있다는 단점이 있어 보였다.
left join을 사용하면서도 정답을 도출하는 것이 가능하다.
아래는 정답 쿼리.
WITH result
AS (SELECT r1.user_id AS "user1_id",
r2.user_id AS "user2_id",
Count(*) AS "cnt"
FROM relations r1
LEFT JOIN relations r2
ON r1.follower_id = r2.follower_id
WHERE r1.user_id <> r2.user_id
GROUP BY 1,
2
ORDER BY 1,
2)
SELECT DISTINCT Least(user1_id, user2_id) AS "user1_id",
Greatest(user1_id, user2_id) AS "user2_id"
FROM result
WHERE cnt = (SELECT Max(cnt)
FROM result);
프로젝트 초반에 에너지를 많이 쏟아붓고 있다.
낮에 계속 이야기하고 밤에 코드카타를 하려니
집중력도 에너지도 딸리는 게 느껴져서🥲
문제 풀이는 주말에 집중적으로 해야겠다.