본문 바로가기

IT Data 분석

[SQL] HackerRank Placements

728x90

세 개의 테이블이 제공됩니다:  Students , Friends  Packages.  학생 에는 ID  및 이름 이라는 두 개의 열이 있습니다 . 

친구 에는 ID  Friend_ID ( 유일한 가장 친한 친구의 ID )의 두 열이 있습니다. 패키지  에는 ID  급여 의 두 열이 있습니다.

가장 친한 친구가 그들보다 높은 급여를 제안받은 학생의 이름을 출력하는 쿼리를 작성하십시오. 이름은 가장 친한 친구에게 제공되는 급여 금액으로 정렬되어야 합니다. 두 명의 학생이 동일한 급여 제안을 받지 않았음을 보장합니다.

 

1. ID, NAME, SALARY, FRIEND_ID, FRIEND_SALARY로 된 임시 테이블 TEMP를 만든다. 

FRINED_SALARY는 새로운 컬럼으로 만들어준다.

2. TEMP 테이블에서 SALARY(내 연봉) 과 FRIEND_SALARY(친구연봉)을 비교해서 친구가 더 크다면 내 이름을 출력하고, 정렬은 친구의 연봉 오름차순으로 해준다.

With temp as
(select S.id, S.name, P.salary, F.friend_id,PP.salary as friend_salary
from Students S
inner join Packages P
on P.id=S.id
inner join Friends F
on F.id=S.id
inner join Packages PP
on F.friend_id=PP.id)

select name 
from temp T
where T.salary < T.friend_salary
order by T.friend_salary