자두의 데브로그

[MySQL] 프로그래머스 언어별 개발자 분류하기 본문

코딩테스트/SQL

[MySQL] 프로그래머스 언어별 개발자 분류하기

왕자두 2024. 10. 11. 15:15

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

 

프로그래머스

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

programmers.co.kr

 

case~end 구문 사용해야된다는 건 알았는데 또 비트연산을 해야돼서 약간 뇌정지가 왔었다.

처음에 했던 방법은 직접 C#,  Python 등에 해당하는 code의 값을 넣었는데 그렇게 하면 만약 해당 스킬에 대한 code가 바뀌면 답이 틀릴 거라고 생각하고 일단 채점해봤는데 당연히 틀렸다. case 내에서도 select 사용할 수 있기 때문에 특히, front end 개발자를 구할 때는 해당 스킬의 code를 더해서 만약 사용자의 skill_code랑 & 연산에서 true  값이 나온다면 해당 값을 grade로 갖게 했다. group by는 사용하지 않아도 됐었다.

 

-- 코드를 작성해주세요
select 
(case
    when (skill_code & (select sum(CODE) from SKILLCODES where category like 'Front%')) and (SKILL_CODE & (select CODE from SKILLCODES where name ='Python')) then 'A'
    when SKILL_CODE & (select CODE from SKILLCODES where name ='C#') then 'B'
    when SKILL_CODE & (select sum(CODE) from SKILLCODES where category like 'front%') then 'C'
    else null
end) as GRADE, ID, EMAIL
from DEVELOPERS
-- group by GRADE, ID, EMAIL
having grade is not null
order by GRADE, ID;