MySQL 프로그래머스 | FrontEnd 개발자 찾기 (비트 연산자로 조인하기)

    728x90

     

    문제

    https://school.programmers.co.kr/learn/courses/30/lessons/276035

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

    • DEVELOPERS 테이블에서 Front End 스킬을 가진 개발자 정보 조회
    • 결과는 ID 기준 오름차순 정렬
    • 쿼리 결과 : 개발자 ID, 이메일, 이름, 성

     

    테이블

    SKILLCODES
    DEVELOPERS

     

     

    풀이과정

    # 조인 조건에 비트연산자 사용

    • SKILLCODE 테이블의 CODEDEVELOPERS 테이블의 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인 경우와 조인됨
    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

    댓글