240724_TIL

J Lee·2024년 7월 24일
1

아무리 사소하더라도 배움이 없는 날은 없다.

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); 

프로젝트 초반에 에너지를 많이 쏟아붓고 있다.
낮에 계속 이야기하고 밤에 코드카타를 하려니
집중력도 에너지도 딸리는 게 느껴져서🥲
문제 풀이는 주말에 집중적으로 해야겠다.

profile
기본기를 소홀히 하지 말자

0개의 댓글

관련 채용 정보