SQL 문제

[HackerRack] Placements

빙수빈수 2023. 10. 17. 09:36

https://www.hackerrank.com/challenges/placements/problem?isFullScreen=true 

 

Placements | HackerRank

Write a query to output the names of those students whose best friends got offered a higher salary than them.

www.hackerrank.com

[코드]

select sub.name
from (select s.id, s.name, f.friend_id, p.salary
     from students as s
     inner join friends as f on s.id = f.id
     inner join packages as p on s.id = p.id) as sub
inner join packages as p on sub.friend_id = p.id
where sub.salary < p.salary
order by p.salary;

 

[고찰]

 이번 문제는 3개의 테이블을 join하는 문제였다. 2개 테이블 join은 해봤지만 3개 부터는 처음이라 다른 사람의 코드를 참고하였다. 우선 이 문제의 핵심은 (내 id, 내 이름, 친구 id, 내 연봉)으로 이루어진 테이블 sub를 구성하는 것이다. 이 부분이 첫 번째 from 뒤에 3개의 테이블을 join하면 만들어지는 결과물이다. 그리고 sub 테이블과 packages 테이블의 친구 id가 같은 컬럼만 join 하면 각 사람의 절친한 친구의 연봉이 나온다. 이 값은 나의 연봉과 비교해서 큰 컬럼만 출력해주면 되는 문제였다. 너무 어렵다..