조건에 맞는 개발자 찾기
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
- 내 풀이
- D.SKILL_CODE & S.CODE = S.CODE
- AND 한 값이 스킬의 CODE 값이 나오면 둘다 그 값을 가진 것이므로
- D.SKILL_CODE & S.CODE = S.CODE
- 📍주의
- JOIN 시 중복이 생길 수 있는지 신경쓰기
- DEVELOPERS.SKILL_CODE는 비트 단위로 여러 스킬을 동시에 포함할 수 있어서,
- 하나의 개발자가 여러 행의 SKILLCODES에 매치될 수 있음
- → 동일한 개발자 정보가 여러 번 나올 수 있으므로, 중복 제거를 위해 DISTINCT를 써야 합니다.
개발자의 SKILL_CODE가 400 (=b'110010000')이라면,
이는 SKILLCODES 테이블에서 CODE가 256 (=b'100000000'), 128 (=b'10000000'), 16 (=b'10000')
에 해당하는 스킬을 가졌다는 것
SELECT DISTINCT D.ID, D.EMAIL, D.FIRST_NAME, D.LAST_NAME
FROM DEVELOPERS D
JOIN SKILLCODES S
ON D.SKILL_CODE & S.CODE = S.CODE
WHERE S.NAME='Python' OR S.NAME='C#'
ORDER BY 1 ASC
'코딩테스트 > SQL' 카테고리의 다른 글
| [SQL] [서브쿼리] 업그레이드 된 아이템 구하기 (0) | 2024.11.01 |
|---|---|
| [SQL][YEAR, JOIN] 연도별 대장균 크기의 편차 구하기 (0) | 2024.11.01 |
| [SQL][OVER] 대장균의 크기에 따라 분류하기 2 (0) | 2024.11.01 |
| [SQL][IFNULL] 특정 조건을 만족하는 물고기별 수와 최대 길이 구하기 (0) | 2024.11.01 |
| [SQL] 수학함수 (1) | 2024.10.31 |