자두의 데브로그

[MySQL] 프로그래머스 FrontEnd 개발자 찾기 본문

코딩테스트/SQL

[MySQL] 프로그래머스 FrontEnd 개발자 찾기

왕자두 2024. 10. 13. 01:29

https://school.programmers.co.kr/learn/courses/30/lessons/276035

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

처음에는 이 문제가 왜 join인지 몰라서 어떻게 푸는지 조금 헤맸다. 물론 문제 유형을 보고 풀면 안되긴 하지만.. 무엇보다 id, email, first_name, last_name 이 developers에만 있었기 때문에 더더욱 서브쿼리로 풀면 되지 않겠나 싶었는데 아니었다.

 

도대체 code랑 skill_code 비교하는 부분을 어디에 넣어야할지 몰라서 결국 구글링을 통해 문제를 해결했는데 답은 join에 있었다.

join을 위해서 on으로 조건을 줄 때 skillcodes에 있는 code의 값과 developers의 skill_code의 값을 & 연산했을 때 skillcodes의 code 값이 나오는 부분에 대해서 join하면 됐다. 그리고 Front End 스킬을 가지고 있어야 되니까 where에 해당하는 조건을 넣으면 된다. 마지막으로는 id를 distinct로 지정해주어야 한다. 만약 그렇지 않으면, 여러 개의 보유 스킬을 가지고 있는 경우 중복되어 ID가 저장되므로 (ex. React, Vue 모두 보유했다면 두 번 출력) distinct로 지정해주는 것도 잊지 말아야 한다.

-- 코드를 작성해주세요
select distinct id, email, first_name, last_name
from developers d
join skillcodes s
on s.code = s.code & d.skill_code
where s.category Like 'Front%'
order by id;