프로그래밍 언어/MySQL

비트 연산 활용하기

2024. 2. 22. 23:40
목차
  1. 문제
  2. MySQL의 비트 연산
  3. 포함관계 확인하기
  4. WITH으로 복잡한 쿼리와 함께 해결하기
  5. 피드백

문제

 

프로그래머스

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

programmers.co.kr

 

프로그래머스

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

programmers.co.kr

 


 

MySQL의 비트 연산

MySQL에서도 비트 연산을 똑같이 지원한다.

&, |, ^와 같은 비트 연산들을 모두 지원한다.

 

그래서 비트로 값을 관리하는 것들의 포함관계를 &를 통해서 단순하게 해결할 수 있다.

 


 

포함관계 확인하기

 

 

위 처럼 테이블을 구해야 할 때, Front-end 개발자를 찾아야 한다.

그렇다면 SKILL_CODE에 Front End가 포함되어 있는지 확인해야 한다.

 

비트는 고유하기 때문에 Front End를 그냥 그대로 더해버리고

&연산을 통해서 해결할 수 있다.

 

SELECT
    ID,
    EMAIL,
    FIRST_NAME,
    LAST_NAME

FROM
    DEVELOPERS

WHERE
    SKILL_CODE & (
        SELECT SUM(CODE)
        FROM SKILLCODES
        WHERE CATEGORY = 'Front End'
    )

ORDER BY
    ID

 


 

WITH으로 복잡한 쿼리와 함께 해결하기

여러가지 CODE의 합을 만들어야 하는 경우 

WITH으로 보조 테이블을 만들어서 쉽게해결 할 수 있다.

 

WITH front AS (
    SELECT SUM(CODE) AS CODE
    FROM SKILLCODES
    WHERE CATEGORY = 'Front End'
)

SELECT
    *

FROM
(
    SELECT
        (CASE
            WHEN (SKILL_CODE & (SELECT CODE FROM SKILLCODES WHERE NAME = 'Python'))
                AND (SKILL_CODE & (SELECT CODE FROM front)) THEN 'A'
            WHEN (SKILL_CODE & (SELECT CODE FROM SKILLCODES WHERE NAME = 'C#')) THEN 'B'
            WHEN (SKILL_CODE & (SELECT CODE FROM front)) THEN 'C'
            ELSE NULL
        END) AS GRADE,
        ID,
        EMAIL

    FROM
        DEVELOPERS
) AS a

WHERE
    GRADE IS NOT NULL

ORDER BY
    GRADE,
    ID

 


 

피드백

WITH은 한 번만 호출하고, (,)를 이용하여 여러 개를 달 수 있다.

별칭은 WHERE에서 사용할 수 없다. 보조 쿼리로 만들고 한번 감싸서 추가 필터링을 해주면 해결 된다.

저작자표시 비영리 변경금지 (새창열림)

'프로그래밍 언어 > MySQL' 카테고리의 다른 글

특정 단위로 테이블 만들기  (0) 2024.02.21
Where In 활용하기  (0) 2024.02.14
서브 테이블로 복잡한 쿼리 풀기  (0) 2024.02.11
서브 쿼리로 데이터 끼워 넣기  (0) 2024.02.11
SQL 코딩 테스트 훈련  (0) 2024.02.08
  1. 문제
  2. MySQL의 비트 연산
  3. 포함관계 확인하기
  4. WITH으로 복잡한 쿼리와 함께 해결하기
  5. 피드백
'프로그래밍 언어/MySQL' 카테고리의 다른 글
  • 특정 단위로 테이블 만들기
  • Where In 활용하기
  • 서브 테이블로 복잡한 쿼리 풀기
  • 서브 쿼리로 데이터 끼워 넣기
코딩 악귀
코딩 악귀
고민하고 발전하는 코더의 발자취.
코딩 악귀
가짜 개발자
코딩 악귀
전체
오늘
어제
  • 분류 전체보기 (48)
    • 프로그래밍 언어 (10)
      • Python (1)
      • Java (2)
      • MySQL (7)
    • 개발 관련 (7)
      • Agile (4)
      • 마음가짐 (2)
      • 셋업 (1)
    • 알고리즘 (12)
    • 프로젝트 (18)
      • Beatn-beat [비튼 - 비트] (17)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

최근 댓글

최근 글

hELLO · Designed By 정상우.
코딩 악귀
비트 연산 활용하기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.