You are given three tables: Students, Friends and Packages. Students contains two columns: ID and Name. Friends contains two columns: ID and Friend_ID (ID of the ONLY best friend). Packages contains two columns: ID and Salary (offered salary in $ thousands per month).
Write a query to output the names of those students whose best friends got offered a higher salary than them. Names must be ordered by the salary amount offered to the best friends. It is guaranteed that no two students got same salary offer.
Samantha
Julia
Scarlet
select s.name
from (select students.id, name, salary
from students, packages
where students.id=packages.id) s,
(select friends.id,friend_id, salary
from friends, packages
where friend_id=packages.id) f
where s.id=f.id
and s.salary<f.salary
order by f.salary;
처음에 인라인 뷰를 사용해서 친구의 연봉, 나의 연봉을 구해서 join을 한 후에 정렬을 했었는데, 원하는 결과가 나오지 않았다.
그래서 자세히 보니, f
테이블을 만들 때, 친구아이디=연봉테이블 아이디
를 해야 친구의 연봉을 구할 수 있고, 친구테이블의 ID=학생의 ID
가 되어야 했다.
그래서 수정해주니 정답으로 잘 출력이 되었다.
친구 연봉이 내 연봉보다 높은 것만을 출력해야 하며, 친구 연봉순으로 내 이름을 출력하면 된다.