[SQL문제풀기] 조건에 맞는 개발자 찾기

silver's avatar
May 16, 2025
[SQL문제풀기] 조건에 맞는 개발자 찾기
Contents
문제MYSQL

문제

MYSQL

1. 내가 작성한 정답

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

2. 이전에 작성한 정답1

SELECT ID, EMAIL, FIRST_NAME, LAST_NAME FROM DEVELOPERS WHERE SKILL_CODE & (SELECT CODE FROM SKILLCODES WHERE NAME = 'C#') > 0 OR SKILL_CODE & (SELECT CODE FROM SKILLCODES WHERE NAME = 'Python') > 0 ORDER BY ID;

이전에 작성한 정답2

SELECT ID, EMAIL, FIRST_NAME, LAST_NAME FROM DEVELOPERS WHERE SKILL_CODE & (SELECT CODE FROM SKILLCODES WHERE NAME='Python') OR SKILL_CODE & (SELECT CODE FROM SKILLCODES WHERE NAME='C#') ORDER BY ID;
 
💡
비트연산
  • AND 연산 (&): 두 비트가 모두 1일 때만 1을 반환한다.
  • OR 연산 (|): 두 비트 중 하나라도 1이면 1을 반환한다.
  • XOR 연산 (^): 두 비트가 다르면 1, 같으면 0을 반환한다.
  • NOT 연산 (~): 비트를 반전시킨다.
 
Share article

silver