DEVELOPERS 테이블에서 Python이나 C# 스킬을 가진 개발자의 정보를 조회하려 합니다. 조건에 맞는 개발자의 ID, 이메일, 이름, 성을 조회하는 SQL 문을 작성해 주세요.
결과는 ID를 기준으로 오름차순 정렬해 주세요.
https://school.programmers.co.kr/learn/courses/30/lessons/276034
SELECT *, BIN(d.SKILL_CODE) & BIN(s.CODE)
FROM SKILLCODES s
CROSS JOIN
DEVELOPERS d
뺄셈 - 999 등 딱 떨어지는 숫자가 나오지 않는다. (큰 수부터 빼는데 음수가 되면 그 다음 수로 빼면 가능할 것 같은데 방법을 모르겠다. 대신 이진이 아닌 십진수로 계산) △
나누기 - 숫자의 자리수로 인해 원하는 결과가 나오지 않는다. ❌
몫 - 기존보다 큰 숫자는 0으로 떨어져서 큰 수부터 진행하면 가능할 수도? (sql쿼리로 작성하는 방법을 모르겠음) △
문자열 - 문자열로 바꿔서 위치에 존재하는 것으로 빠르게 탐색하고자 함 (이것도 1100 에서 1000을 찾으려고 LIKE를 사용하면 1100이라는 100 때문에 동일한 문자가 없어 판단을 못하는 문제 발생... 이게 제일 빠르게 연산할 것 같았는데...) ❌
# python or c# 이진
SELECT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPERS
WHERE SKILL_CODE & (SELECT sum(code) ## 비트 연산을 십진수에서 바로 진행할 수 있다.
FROM SKILLCODES
WHERE NAME IN ('Python', 'C#'))
ORDER BY ID
CAST(expr AS type), CONV(code, 2, 10) 등 변환을 하고 연산을 했는데 이상한 값이 나왔다. 알고 보니 비트 연산을 알아서 2진수로 바꿔서 연산하는 것이었다......(어쩐지 값이 계속 이상해서 문자열로 변환된다는 거 보고 다시 이진으로 바꿔서 연산했는데 그대로더라..)