토요일이 밝았다!
어제 풀이로 정리한 내용을 가볍게 보니 Basic 12개 정도, Intermediate 8개 정도가 되는 것 같다.
오늘 하루도 화이팅 해보는 걸로 하자!!
오늘의 목표는 풀이를 찾아보지 않고 해결해내는 것!
문제
DIFFICULTY : Medium, SKILL : Intermediate, MySQL
You are given three tables: Students, Friends and Packages. Students contains two columns: ID and Name. Friends contains two columns: ID and Friend_ID (ID of the ONLY best friend). Packages contains two columns: ID and Salary (offered salary in $ thousands per month). 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. 문제해석 1) 가장 친한 친구들이 그들보다 더 높은 월급을 제안 받은 학생들의 이름 조회한다. 2) 이름은 가장 친한 친구들에게 제안된 월급 액수에 따라 순서가 매겨져야 합니다. - 월급 액수가 '높은 순서'라는 말이 없어서 그런지 내림차순이 아니라 오름차순으로 정렬해야 한다. 3) 같은 월급을 제안 받은 학생은 두 명 중 한 명도 없다. |
INPUT 테이블
OUTPUT 결과 샘플
See the following table:
Now,
- Samantha's best friend got offered a higher salary than her at 11.55
- Julia's best friend got offered a higher salary than her at 12.12
- Scarlet's best friend got offered a higher salary than her at 15.2
- Ashley's best friend did NOT get offered a higher salary than her
The name output, when ordered by the salary offered to their friends, will be:
- Samantha
- Julia
- Scarlet
SQL CODE
SELECT S.NAME
FROM STUDENTS S
JOIN PACKAGES P1 ON S.ID = P1.ID
JOIN FRIENDS F ON S.ID = F.ID
JOIN PACKAGES P2 ON F.FRIEND_ID = P2.ID
WHERE P1.SALARY < P2.SALARY
ORDER BY P2.SALARY ASC
;
SQL 결과
Stuart
Priyanka
Paige
Jane
Julia
Belvet
Amina
Kristeen
Scarlet
Priya
Meera
느낀점/개선점
추가 조사 | - |
느낀점 | JOIN, GROUP BY, WHERE, HAVING, ORDER BY 절만으로도 굉장히 많은 걸 할 수 있다! 현업에서 SQL을 놓은지 6개월 정도 되어 가는데, 하루에 많은 양을 몰아서 보다보니 어느정도 감도 돌아오는 것 같다. 긍정적인 기분이 들어 좋다! |
개선점 | 문제를 이해하는 시간을 제외하고 단지 문제를 다시보면서 풀이하는 시간이 11분 소요되었다. 오늘은 시간관리도 중점적으로 생각해보자. |