문제 출저
https://school.programmers.co.kr/learn/courses/30/lessons/301646
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
GENOTYPE 필드에서 2번 형질을 보유하지 않으면서 1번이나 3번 형질을 보유하고 있는 대장균의 개체 수를 출력해야 합니다. 이 때, GENOTYPE은 2진수로 표현합니다. 그러므로 비트 연산자를 통해 보유 여부를 판단합니다.
2번 형질이 포함되어 있는지 확인하려면 WHERE 절에 GENOTYPE & 2 를 수행합니다. 이 때 결과값이 2면 2의 형질을 가지는 것이고 0이면 2의 형질을 가지지 않는 것 입니다.
GENOTYPE & 2 = 0 # 2의 형질을 가지지 않음
GENOTYPE & 2 = 2 # 2의 형질을 가짐
WHERE를 통해 조건을 만족한 데이터 수를 세기 위해 COUNT를 사용합니다.
SQL
/*
1번 = 1
2번 = 2
3번 = 4
*/
SELECT
COUNT(*) AS COUNT
FROM
ECOLI_DATA
WHERE
GENOTYPE & 2 = 0
AND (GENOTYPE & 1 = 1 OR GENOTYPE & 4 = 4)