위와 같은 형태로 데이터를 뽑아내야한다. (2번 )
일단은 X=Y 데이터를 뽑아내는것은 쉽겠다고 생각해서 먼저 작업했다.
SELECT X, Y
FROM functions
WHERE X = Y
GROUP BY X, Y
HAVING COUNT(*) = 2
첫번재 미션 완료.
두번째는 조금 어려울거 같다.
일단, 테이블이 한개 더 필요하다고 생각했고 SELF JOIN을 사용했다.
원했던 데이터와 그렇지 못한 데이터가 함께 출력되었다. (X=Y)
조건을 걸어줘야겠다.
이상함 감지...... 여기서 정말 많이 고민했다. 하고 나니 어려운 조건이 아닌데, 생각하는데까지 많은 시간이 걸렸다. ㅠㅠ
어떻게 하면 한개의 행이 출력이 될까..?
테이블마다 오름차순을 적용해주고 합쳐 버리면 끝이라고 생각했다.
생각해 보니.. 나의 생각처럼 합친다면 아래와 같은 형태가 되어버린다.
이 부분에서도.. 많이 헤맸다. 결국 구글링해서 알아냈다.
그냥 제일 마지막에 ORDER BY 를 걸어주면 된다.(참 쉬죠잉~?)
SELECT X, Y
FROM functions
WHERE X = Y
GROUP BY X, Y
HAVING COUNT(*) = 2
UNION
SELECT A.X, A.Y
FROM functions A
INNER JOIN functions B ON A.X = B.Y AND A.Y = B.X
WHERE A.X < A.Y
ORDER BY X ASC;
끝.
'개인공부 > SQL' 카테고리의 다른 글
[SQL]리트코드 197. Rising Temperature 문제 풀이 (0) | 2023.04.23 |
---|---|
[SQL]리트코드 181. Employees Earning More Than Their Managers 문제 풀이 (0) | 2023.04.22 |
[SQL]리트코드 183. Customers Who Never Order 문제 풀이 (0) | 2023.04.22 |
[SQL]해커랭크 Population Census 문제 풀이 (0) | 2023.04.22 |
[SQL]해커랭크 Average Population of Each Continent 문제 풀이 (0) | 2023.04.22 |