전혀 감을 못 잡아서 어쩔 수 없이 구글링.........하기 블로그님 참고...
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 순으로 오름차순 정렬
반응형
'데이터관련공부 > SQL' 카테고리의 다른 글
[HackerRank] SQL - Project Planning (0) | 2022.10.09 |
---|---|
[HackerRank] SQL - The PADS (0) | 2022.10.08 |
[SQL 첫걸음] 7장 (UNION, 결합(JOIN), 관계형모델) (0) | 2022.07.28 |
[프로그래머스] SQL - 오랜 기간 보호한 동물(2) (Lv. 3) (0) | 2022.06.28 |
[HackerRank] SQL - Draw The Triangle 2 (0) | 2022.06.28 |