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 하면 각 사람의 절친한 친구의 연봉이 나온다. 이 값은 나의 연봉과 비교해서 큰 컬럼만 출력해주면 되는 문제였다. 너무 어렵다..
'SQL 문제' 카테고리의 다른 글
[프로그래머스_SQL] 대여 기록이 존재하는 자동차 리스트 구하기 (0) | 2023.10.25 |
---|---|
[프로그래머스_SQL] 특정 기간동안 대여 가능한 자동차들의 대여비용 구하기 (0) | 2023.10.20 |
[HackerRank] The Report (0) | 2023.10.16 |
[HackerRank] Weather Observation Station 18 (0) | 2023.10.16 |
[HackerRank] Contest Leaderboard (0) | 2023.10.16 |