https://school.programmers.co.kr/learn/courses/30/lessons/276034
SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPERS
WHERE BIN(SKILL_CODE) & (SELECT BIN(SUM(CODE)) FROM SKILLCODES WHERE NAME IN ('C#', 'Python')) > 0
ORDER BY ID
BIN()은 NUMBER을 2진수 값으로한 "문자열"을 반환한다. 따라서 이 쿼리는 문자열간의 비트 연산을 수행하므로 예상치 못한 값이 된다.
제출 후 문제가 생긴 이유를 찾고 정수의 비트연산으로 수정했다.
또한, 어차피 &연산간 일치하는 값이 없다면 0을 반환하게 되므로 " > 0"구문을 지웠다.
WEHERE 0은 곧 WHERE FALSE로 평가된다.
SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPERS
WHERE SKILL_CODE & (SELECT SUM(CODE) FROM SKILLCODES WHERE NAME IN ('C#', 'Python'))
ORDER BY ID
'[프로그래머스] SQL > 오답 노트' 카테고리의 다른 글
[lv3] 없어진 기록 찾기 (0) | 2024.11.01 |
---|---|
[lv3] 대장균의 크기에 따라 분류하기 2 (0) | 2024.10.18 |
[lv2] 자동차 평균 대여 기간 구하기 (1) | 2024.10.09 |
[lv3] 업그레이드 할 수 없는 아이템 구하기 (1) | 2024.10.05 |
[lv2] 자동차 종류 별 특정 옵션이 포함된 자동차 수 구하기 (0) | 2024.10.05 |