[HackerRank] Placements

당당·2023년 7월 21일
0

HackerRank

목록 보기
20/27

https://www.hackerrank.com/challenges/placements/problem

📔문제

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


🧮분야

  • JOIN

📃SQL 코드

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가 되어야 했다.

그래서 수정해주니 정답으로 잘 출력이 되었다.

친구 연봉이 내 연봉보다 높은 것만을 출력해야 하며, 친구 연봉순으로 내 이름을 출력하면 된다.

profile
MySQL DBA 신입

0개의 댓글