DEVELOPERS 테이블에서
Python이나 C# 스킬을 가진 개발자의 정보를 조회하려 합니다.
조건에 맞는 개발자의 ID, 이메일, 이름, 성을 조회하는 SQL 문을 작성해 주세요.
결과는 ID를 기준으로 오름차순 정렬해 주세요.
SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPERS AS D
WHERE D.SKILL_CODE & (SELECT CODE FROM SKILLCODES WHERE NAME="Python") > 0
OR D.SKILL_CODE & (SELECT CODE FROM SKILLCODES WHERE NAME="C#") > 0
ORDER BY ID
도대체 어떻게 풀어야 하는가 하고 고민했는데, 비트 연산자를 알고 있는지 묻는 문제였다.
AND(&) 연산을 이용하면 Python 또는 C#의 CODE가 포함되어있는지 체크를 할 수 있다.
비트 AND 연산의 결과는 0 또는 양의 정수가 될 수 있는데, 만약 결과가 0보다 크다면 이는 SKILL_CODE에 해당 비트가 설정되어 있음을 의미하는 것이다.