Notice
Recent Posts
Recent Comments
Link
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

하루에 하나씩 공부하기

[해커랭크-Advanced Join] Symmetric Pairs 본문

카테고리 없음

[해커랭크-Advanced Join] Symmetric Pairs

dltaexox 2025. 9. 11. 17:48

- 문제

X1=Y2, X2=Y1인 순서쌍 찾기

 

- 키포인트

X1=Y1인 경우, 테이블에 같은 쌍이 한개여도 출력 >> 이를 어떻게 처리해야 할까

 

- 쿼리

SELECT F.X, F.Y
FROM FUNCTIONS F JOIN FUNCTIONS S
ON F.X=S.Y AND F.Y=S.X
WHERE F.X<F.Y OR (F.X=F.Y AND (SELECT COUNT(*)
FROM FUNCTIONS
WHERE X=F.X AND Y=F.Y)=2
)
GROUP BY F.X, F.Y
ORDER BY F.X ASC;

 

F.X=F.Y인 경우 순서쌍을 카운트 해 2개일 경우만 출력하도록 WHERE절에 추가

 

- 다른 풀이

SELECT x, y
FROM functions 
WHERE x = y 
GROUP BY x, y
HAVING COUNT(*) = 2 

UNION

SELECT f1.x, f1.y 
FROM functions AS f1
        INNER JOIN functions AS f2 ON f1.x = f2.y AND f1.y = f2.x
WHERE f1.x < f1.y
ORDER BY x

 

아예 따로 출력하고 UNION