[SQL문제다시풀기] 조건에 맞는 개발자 찾기 - 비트 연산

silver's avatar
Feb 10, 2025
[SQL문제다시풀기] 조건에 맞는 개발자 찾기 - 비트 연산
Contents
문제MYSQL

문제

MYSQL

내가 작성한 오답

: Python,C# 모두를 가지고 있는 개발자는 2번 출력된다.
select d.id, d.email, d.first_name, d.last_name from developers d join skillcodes s on d.skill_code & s.code where s.name in ('Python','C#') order by 1 asc
 

내가 작성한 정답

: distinct를 추가하여 같은 아이디는 한 번만 출력되도록 한다.
select distinct d.id, d.email, d.first_name, d.last_name from developers d join skillcodes s on d.skill_code & s.code where s.name in ('Python','C#') order by 1 asc
 
💡
비트 연산자 &를 사용하면 두 숫자의 같은 자리의 비트가 모두 1일 때만 1이 반환되는데 위의 on절에서 &를 사용하여 하나의 비트값이라도 겹치면 1이 출력이 되어 조인이 성립된다.
on (d.skill_code & s.code) = s.code으로 한정해 보다 명확하게 비교할 수 있다.
on (d.skill_code & s.code) <> 0 : <> 는 같지 않다 : 개발자의 skill_code에 s.code 비트가 하나라도 포함되어 있으면 해당 스킬이 있다고 판단
 
Share article

silver