[SQL Runday] HackerRank - Placements

학생들 중 베프들이 자신보다 더 높은 연봉을 제안 받은 학생들의 이름을 출력하는 쿼리를 작성해라.

  • 베프들이 제안받은 연봉 순대로 정렬해라
  • 동일한 연봉을 제안 받은 학생들은 없음

Table

Students, Friends, Packages


Key points

  • 이 문제는 외래키가 겹치는 테이블들을 연속해서 옆으로, 옆으로 붙여서 해결하는 쉬운 문제!

  • Friends 테이블을 기준으로 연속 3번 left join을 통해 해결할 수 있다.

    • select * from Friends의 output
  • students 테이블을 한번 left join해서 ID의 이름을 가져오고

  • salary 테이블을 조인해서 자신 기준의 샐러리를 가져오고

  • salary 테이블을 다시 조인해서 friend의 샐러리를 가져온다.

  • 마지막으로 where 조건으로 내 친구가 나보다 많이 받는 경우만 조회하고,

  • 친구 연봉 기준으로 정렬한다. (뭔가 좀 슬프다.)

최종 쿼리

select s.name
from friends f
left join students s on s.id = f.id
left join packages p on p.id = s.id
left join packages p1 on f.friend_id = p1.id
where p1.salary > p.salary
order by p1.salary

좋은 웹페이지 즐겨찾기