SQL/문제풀이

[HackerRank] Symmetric Pairs 📌

응엉잉 2024. 2. 14. 21:39

https://www.hackerrank.com/challenges/symmetric-pairs/problem?h_r=internal-search&isFullScreen=true

 

Symmetric Pairs | HackerRank

Write a query to output all symmetric pairs in ascending order by the value of X.

www.hackerrank.com

 X1 = Y2 and X2 = Y1 인 경우를 Symmetric Pairs 라고 한다.

조건이 약간 복잡하게 느껴지는 경우 Case를 쪼개보면 좋다.

 

ex1)20 2020 20 

SELECT x, y
FROM functions
WHERE x = y
GROUP BY x, y
HAVING COUNT(*) > 1 -- x = y 인 row가 2개 이상이어야 함

 

ex2)21 2222 21

SELECT f1.x, f1.y
FROM Functions f1
	INNER JOIN Functions f2 ON f1.x = f2.y AND f1.y = f2.x
WHERE f1.x < f1.y -- 문제 조건

 

ex1과 ex2를 UNION 한 후 정렬하면 원하는 결과를 얻을 수 있다.

(SELECT x, y
FROM functions
WHERE x = y
GROUP BY x, y
HAVING COUNT(*) > 1 -- x = y 

UNION

SELECT f1.x, f1.y
FROM Functions f1
    INNER JOIN Functions f2 ON f1.x = f2.y AND f1.y = f2.x
WHERE f1.x < f1.y)

ORDER BY x