728x90
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.'
<조건 정리>
a) X1<=Y1 이어야 한다
b) X1=Y1인 경우에는 (a,a), (a,a) 같은 쌍이 총 두번이 나와야한다.
c) X1!=Y1인 경우에는 (a,b), (b,a) 가 나와야한다.
c)을 해결하는 방법
=> 1. X1 Y1 Y2 X2의 형태로 조인한다. 이때 X1=Y2, Y1=X2일 때만 조인하는 것으로 inner join 을 사용해야한다.
=> 즉, X,Y 리스트에서 (a,b), (b,a) 두 쌍이 다 존재할때만 보여주는 조건이 된다.
SELECT *
FROM Functions F1
inner join Functions F2
On F1.X=F2.Y and F1.Y=F2.X
order by 1 asc
a), b)를 해결하는 방법
=> a) 를 위해 having F1.X<F1.Y
=> b) 를 위해 count(*) >1
=> 두 조건은 or로 처리해야한다.
SELECT *
FROM Functions F1
inner join Functions F2
On F1.X=F2.Y and F1.Y=F2.X
group by F1.X, F1.Y
having F1.X<F1.Y or count(*)>1
order by 1 asc
최종코드
SELECT F1.X,F1.Y
FROM Functions F1
inner join Functions F2
On F1.X=F2.Y and F1.Y=F2.X
Group by F1.X,F1.Y
Having count(F1.X)>1 or F1.X<F1.Y
order by F1.X
'IT Data 분석' 카테고리의 다른 글
[MySQL] 콤마가 포함된 텍스트 타입 컬럼을 숫자형 컬럼으로 변경하기 / 가격 데이터를 숫자 데이터로 변경하기 (0) | 2022.11.06 |
---|---|
[SQL] HackerRank PROJECT PLANNING (0) | 2022.11.06 |
[SQL] HackerRank Placements (0) | 2022.11.06 |
[ADSP] 3과목 데이터분석 - 통계분석 (0) | 2022.10.10 |
[ADSP] 3과목 데이터분석 - 데이터분석 개요 (0) | 2022.10.10 |