Programing Language/SQL
해커랭크 Symmetric Pairs (셀프 JOIN, 조건)
Data-SSung
2025. 6. 16. 15:32
반응형
https://www.hackerrank.com/challenges/symmetric-pairs/problem
Symmetric Pairs | HackerRank
Write a query to output all symmetric pairs in ascending order by the value of X.
www.hackerrank.com
문제 정의 (영어 -> 한국어 번역 후 문제 파악하기)
X 와 Y라는 두 개의 열이 포함된 함수 테이블이 주어졌습니다 .
두 쌍 (X 1 , Y 1 ) 과 (X 2 , Y 2 ) 는 X 1 = Y 2 이고 X 2 = Y 1 일 때 대칭 쌍 이라고 합니다 .
X 값을 기준으로 모든 대칭 쌍을 오름차순으로 출력하는 쿼리를 작성하세요 . X 1 ≤ Y 1 이 되는 행을 나열하세요 .
문제 접근
- X 값을 기준으로 모든 대칭 쌍을 오름차순으로 출력하는 쿼리
- 조건
- X 1 = Y 2 이고 X 2 = Y 1
- X 1 ≤ Y 1 이 되는 행
- X1기준 내림차순
- 접근
- x=y : 동일한 쌍 2개 이상
- x<> y : 로직에 충실하되, 중복 제거
- X 1 = Y 2 이고 X 2 = Y 1
- X 1 ≤ Y 1 이 되는 행
/*
-- X 값을 기준으로 모든 대칭 쌍을 오름차순으로 출력하는 쿼리
-- 조건
-- X 1 = Y 2 이고 X 2 = Y 1
-- X 1 ≤ Y 1 이 되는 행
-- X1기준 내림차순
ex)
x,y
20,20
20,20
20,21
23,22
22,23
21,20
symetric
20,20
20,20
23,22
22,23
20,21
21,20
*/
sql-- 수정된 코드
select distinct a.x, a.y
from (
-- x <> y (서로 다른 대칭 쌍)
select a.x, a.y
from Functions a
inner join Functions b -- innner → inner
on a.x = b.y
and a.y = b.x
and a.x < a.y -- b.y → a.y
union all
-- x = y (같은 값이 2개 이상 있는 경우)
select x, y
from Functions
where x = y
group by x, y
having count(*) >= 2
) a
order by a.x -- x → a.x
반응형