본문 바로가기
SQL/코딩테스트

[MySQL] 하나의 테이블에 두개의 키 변수를 이용해 Join 하기

by Nanki 2024. 11. 9.

문제 출처 : https://www.hackerrank.com/challenges/placements/problem

 

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

 

풀이 매크로

1. 문제 정의 : 별도의  문제정의 없음

2. 요구사항

 - Friends 테이블의 두개의 키에 salary를 붙여 비교한다.

 - 비교 후 Friend의 salary가 더 큰 사람들만 출력해라

 - friend 기준으로 salary를 오름차순하여 student 테이블의 Name을 출력해라

 

코드

SELECT -- A.ID AS st_id
     A.Name AS st_name
    -- , B.Friend_ID AS fr_id
    -- , S1.salary AS ID_salary
    -- , S2.salary AS Fr_salary
FROM students AS A
INNER JOIN friends AS B ON A.ID = B.ID
INNER JOIN packages AS S1 ON A.ID = S1.ID
INNER JOIN packages AS S2 ON B.Friend_ID = S2.ID
WHERE (S1.salary < S2.salary)
ORDER BY  S2.salary

 

주의해야할 점

 - Friends에 두개의 키가 있고, 각각의 키에 맞는 salary를 붙여야 한다. 이때 붙였을때의 salary는 테이블이름(s2.salary)로 구분이 되므로 헛갈리지 않도록 AS를 이용해서 네이밍을 다시해주도록하자.