728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/276035
- DEVELOPERS 테이블에서 Front End 스킬을 가진 개발자 정보 조회
- 결과는 ID 기준 오름차순 정렬
- 쿼리 결과 : 개발자 ID, 이메일, 이름, 성
테이블
SKILLCODES | |
DEVELOPERS |
풀이과정
# 조인 조건에 비트연산자 사용
- SKILLCODE 테이블의 CODE와 DEVELOPERS 테이블의 SKILL_CODE를 비트연산으로 비교했을 때 TRUE인 경우만 테이블이 조인되도록 함
- SKILL_CODE가 400 (=b'110010000')인 경우,
SKILLCODES 테이블에서 CODE가 256 (=b'100000000'), 128 (=b'10000000'), 16 (=b'10000') 에 해당하는 스킬을 가졌다는 것 - 비트연산자 &를 사용했을 때 SKILL_CODE 400은
해당 자릿수에 1이 매칭되는 CODE가 256인 경우, 128인 경우, 16인 경우와 조인됨
- SKILL_CODE가 400 (=b'110010000')인 경우,
SELECT *
FROM DEVELOPERS D
JOIN SKILLCODES S ON D.SKILL_CODE & S.CODE
# 정답
- WHERE 조건으로 Front End 개발자만 찾도록 필터링해주면 끝!
SELECT DISTINCT ID, EMAIL, FIRST_NAME, LAST_NAME
FROM DEVELOPERS D
JOIN SKILLCODES S ON D.SKILL_CODE & S.CODE
WHERE S.CATEGORY = 'Front End'
ORDER BY ID
728x90
'코딩테스트 > SQL 코드카타' 카테고리의 다른 글
MySQL 프로그래머스 | 식품분류별 가장 비싼 식품의 정보 조회하기 (2) | 2024.09.24 |
---|---|
MySQL 프로그래머스 | 입양 시각 구하기2 (SQL식 반복문 : RECURSIVE 재귀 가상테이블 만들기) (3) | 2024.09.23 |
MySQL 프로그래머스 | 상품을 구매한 회원 비율 구하기 (2) | 2024.09.19 |
MySQL 프로그래머스 | 그룹별 조건에 맞는 식당 목록 출력하기 (1) | 2024.09.18 |
MySQL 프로그래머스 | 자동차 대여 기록 별 대여 금액 구하기 (ON과 WHERE절 차이) (2) | 2024.09.17 |
댓글