728x90
문제
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
- Write a query to output the names of those students whose best friends got offered a higher salary than them.
- Names must be ordered by the salary amount offered to the best friends.
- It is guaranteed that no two students got same salary offer.
# 문제 해석
- 친한 친구가 자신보다 높은 급여를 받는 경우에 해당하는 학생들의 이름 조회하기
- 이름은 자신의 친한 친구가 받는 급여 크기로 정렬하기
테이블
Students 테이블 | Friends 테이블 | Packages 테이블 |
![]() |
![]() |
![]() |
풀이과정
# 가상테이블 fs 생성
- 세 테이블을 ID를 기준으로 INNER JOIN함
- FROM절에 조인할 테이블을 모두 넣고, WHERE절에 조건을 넣어주면 INNER JOIN됨
- ID와 이름, 급여, 친한 친구ID까지 SELECT문에 조회해줌
- 나중에 친한 친구ID에 해당하는 친구의 급여를 Packages 테이블에서 한 번 더 조인해줄 것이기 때문
1 2 3 4 5 6 | WITH fs AS( SELECT s.ID, s.Name, p.Salary, f.Friend_ID FROM Students s, Friends f, Packages p WHERE s.ID = f.ID AND f.ID = p.ID ) SELECT * FROM fs | cs |
# 내 ID, 내 이름, 내 급여 | 친구 ID, 친구 급여
- 내 급여와 친구 급여를 한 눈에 볼 수 있게 한 번 다같이 조회해봄
1 2 3 4 5 6 7 | WITH fs AS( SELECT s.ID, s.Name, p.Salary, f.Friend_ID FROM Students s, Friends f, Packages p WHERE s.ID = f.ID AND f.ID = p.ID ) SELECT fs.*, p.Salary FROM fs JOIN Packages p ON fs.Friend_ID = p.ID | cs |
# 정답
- 가상 테이블과 Packages 테이블을 조인해 친한 친구의 급여도 알 수 있게 만듦
- WHERE절에서 자신의 급여보다 친한 친한 친구의 급여가 높은 경우를 조건으로 주어 레코드 필터링
- 급여 기준으로 정렬
1 2 3 4 5 6 7 8 9 | WITH fs AS( SELECT s.ID, s.Name, p.Salary, f.Friend_ID FROM Students s, Friends f, Packages p WHERE s.ID = f.ID AND f.ID = p.ID ) SELECT fs.Name FROM fs JOIN Packages p ON fs.Friend_ID = p.ID WHERE fs.Salary < p.Salary ORDER BY p.Salary | cs |
728x90
'코딩테스트 > SQL 코드카타' 카테고리의 다른 글
MySQL 해커랭크 | Draw The Triangle ( *로 (역)직각삼각형 만들기, SQL식 반복문 >> 재귀쿼리, 재귀함수, REPEAT함수) (1) | 2024.08.30 |
---|---|
MySQL 해커랭크 | SQL Project Planning (테이블에서 필드 값 빼기) (2) | 2024.08.29 |
MySQL 해커랭크 | Contest Leaderboard (0) | 2024.08.27 |
MySQL 해커랭크 | Ollivander's Inventory (ON과 WHERE 조건절의 차이) (0) | 2024.08.26 |
MySQL 해커랭크 | Challenges (WHERE절과 HAVING절 차이) (0) | 2024.08.23 |
댓글