Advanced Join 문제이다!
STUDENTS 테이블은 학생, FRIENDS 테이블은 그들의 가장 친한 친구, 그리고 PACKAGES에는 그들의 월급 정보가 저장돼 있다. 이때, 베프가 본인보다 월급이 높은 학생의 이름을 출력해야 한다. 왜 이런 자해 행위를...
우선 학생과 베프를 찾아야 하기 때문에, ID로 조인을 건다.
그리고 월급 정보가 들어있는 PACKAGES를 두 번 사용하여 각각 학생과 친구의 월급을 조인을 걸어 찾는다.
여기까지 하면 친구의 ID와 내 월급, 그리고 친구의 월급을 알 수 있게 된다.
여기서 내 월급보다 친구의 월급이 낮은 행만 골라내면 조건을 모두 만족하게 된다.
SELECT S.NAME
FROM STUDENTS S, FRIENDS F, PACKAGES P1, PACKAGES P2
WHERE S.ID = F.ID
AND S.ID = P1.ID
AND F.FRIEND_ID = P2.ID
AND P1.SALARY < P2.SALARY
ORDER BY P2.SALARY
;
'Algorithm' 카테고리의 다른 글
[해커랭크 HackerRank] SQL Project Planning (Oracle) (0) | 2021.04.03 |
---|---|
[해커랭크 HackerRank] Symmetric Pairs (Oracle) (0) | 2021.03.19 |