본문 바로가기
데이터관련공부/SQL

[HackerRank] SQL - Symmetric Pairs

by 자유롭고 싶은 키털트 2022. 9. 30.

전혀 감을 못 잡아서 어쩔 수 없이 구글링.........하기 블로그님 참고...

https://hanawithdata.tistory.com/entry/hackerrank-Symmetric-Pairs

 

하기 처럼 Pair 중 값 하나만 보여지게 하되, X 가 작은 쪽이 왼쪽에 와야 하는 조건

즉, 20 21, 21 20 은 1 pair 이지만 X 가 작은 쪽인 20 21만 Output 에 나오도록 쿼리를 만들어야 한다

 

SELECT sub.X, sub.Y
FROM (SELECT if(X <= Y, X , Y) as X, if(X <= Y, Y , X) as Y 
FROM Functions) sub
GROUP BY sub.X, sub.Y
HAVING COUNT(*) >=2
ORDER BY sub.X

 

1) 위에 서브 쿼리는 if 구문을 이용하여 작은 쪽이 왼쪽으로 오도록 유도

(그러면 하기 2  24 경우처럼 무조건 작은 쪽이 왼쪽으로 온다)

2) 그렇게 만든 테이블을 Group by 를 함

3) 이 때, pair 만 뽑아야 하므로 개수가 2개 이상인 애들만 추출

4) X 순으로 오름차순 정렬

반응형