본문 바로가기
프로그래머스/코딩테스트 연습

SQL lv4 언어별 개발자 분류하기

by 포잉띠 2024. 5. 2.

 

2진법으로 해놓은것을 보니 비트연산자를 사용해야만 할 것 같았다.

문제 분류가 group by 로 되어있긴 했는데 group by 거의 안쓰고 풀었다...

with fe as(
select category, sum(code) as code
from skillcodes
group by 1
having category = "Front End"
),
c as (
select name , code
from skillcodes
where name = "C#"
),
py as(
select name, code
from skillcodes
where name = "Python"
)
select 
case 
when d.skill_code&f.code and d.skill_code&p.code then "A"
when d.skill_code&c.code then "B"
when d.skill_code&f.code then "C"
end as grade, 
d.id, d.email
from fe f, c c, py p , developers d
where d.skill_code&f.code or d.skill_code&c.code or (d.skill_code&p.code and d.skill_code&f.code)
order by 1, 2

group by를 어디에 어떻게 써야할지 감이 안와서 하드코딩을 하다보니 쿼리가 길어졌다.

프론트, C#, Python 을 나누고 비트연산자로 grade 하나씩 case when 구문으로 구분해 주었다.

where절은 case when 조건문에 걸리지 않는 레코드들을 필터링 하기 위해 사용했다.

하드코딩 해서 금방 풀긴 했지만 쉽지않은 문제였다.