[Mysql] 실전 종합 문제 풀이 (join, union, having, order by)

ifyouseeksoomi·2020년 12월 13일
0

Mysql

목록 보기
7/13
post-thumbnail

마무리 종합 문제

HackerRank Symmetric Pairs

문제

풀이로 가는 과정

먼저 문제의 요구사항에 나온 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에 해야하므로 맨 마지막
profile
묻고 더블로 가는 중인 백엔드 개발자입니다.

0개의 댓글