문제
ou are given a table, Functions, containing two columns: X and Y.
Two pairs (X1, Y1) and (X2, Y2) are said to be symmetric pairs if X1 = Y2 and X2 = Y1.
Write a query to output all such symmetric pairs in ascending order by the value of X. List the rows such that X1 ≤ Y1.
코드
# X와 Y가 같지 않은 것과 같은 것을 UNION으로 묶어서 보여주기
# X와 Y가 같지 않을 때
SELECT A.X, A.Y
FROM Functions A
INNER JOIN Functions B ON A.X = B.Y AND B.X = A.Y
WHERE A.X < A.Y
UNION
# X와 Y가 같을 떄
SELECT X, Y
FROM Functions
WHERE X = Y
GROUP BY X, Y
HAVING COUNT(X) = 2
ORDER BY X
- Functions 테이블 사용
- 대칭이 되는 두 쌍인 데이터를 구하는 문제
- (x1, y1) (x2, y2) <-이렇게 두 쌍이 필요하기 때문에 self join
- X1 = Y2 and X2 = Y1
- X1 <= Y1 그 중에서도 x가 y보다 작은 값만 출력하겠다
- 순서 나열은 X 값의 오름차순으로 정렬
출처
반응형
'Algorithm > MySQL' 카테고리의 다른 글
[해커랭크(HackerRank)] The Blunder (MySQL) (0) | 2021.07.06 |
---|---|
[해커랭크(HackerRank)] Japan Population (MySQL) (0) | 2021.07.05 |
[LeetCode] 197. Rising Temperature (MySQL) (0) | 2021.07.05 |
[LeetCode] 181. Employees Earning More Than Their Managers (MySQL) (0) | 2021.07.05 |
[LeetCode] 183. Customers Who Never Order (MySQL) (0) | 2021.07.05 |