먼저 문제의 요구사항에 나온 symmetric pair가 무엇인지 확실히 이해하는 것이 중요.
또한, sample output에 나온대로 20 20, 20 21, 22 23 을 도출해야하지만 이 때에
20 20 처럼 X=Y의 형태인 pair와
20 21, 22 23처럼 X<Y의 형태를 보이는 pair를 구분 지어 생각하는 것이 큰 도움이 된다.
# 먼저 20 20 같은 pair를 하나 구하는 과정
select X, Y
from functions
where X = Y
group by X, Y
having count(*)=2 # symmetric pair이므로 20 20, 20 20 이렇게 두 쌍이 같을 때만
Union
select f1.X, f1.Y
from functions as f1
join functions as f2
on f1.X = f2.Y AND f1.Y = f2.X
where f1.X < f1.Y
order by X; # order by는 Union 된 전체 result set에 해야하므로 맨 마지막