1. 특정 형질을 가지는 대장균 찾기
- 2진수로 바꾸는 함수 : BIN(컬럼명)
- 2진수로 바꾼 후 특정 자리수에 있는 숫자를 확인하고 싶은 경우, BIN()을 사용하지 않고 비트연산을 통해 사용
** 비트연산 **
GENOTYPE & 2 <> 0 --오른쪽에서 두 번째 자리수 확인할 때
GENOTYPE & 8 <> 0 --오른쪽에서 세 번째 자리수 확인할 때
GENOTYPE & 16 <> 0 --오른쪽에서 네 번째 자리수 확인할 때
- 2진수로 바꿨을 때 k번째 자리수가 1이면 결과값이 2^(k-1)로 나온다 = 해당 자리수가 1이면 비트연산한 값 그대로 나오거나 0이 나옴
-> GENOTYPE & 2 의 결과 : 2 or 0
-> GENOTYPE & 8 의 결과 : 8 or 0
-> GENOTYPE & 16 의 결과 : 16 or 0
SELECT COUNT(*) AS COUNT FROM ECOLI_DATA
WHERE GENOTYPE & 2 =0 AND (GENOTYPE & 1 <>0 OR GENOTYPE & 4<>0);
2. 부모의 형질을 모두 가지는 대장균 찾기
- 부모의 형질과 비교해서 전부 다 가지고 있으면 0 이 아닐테니, 자식 형질 & 부모 형질 = 부모 형질 로 조건 걸어서 해결
SELECT c.ID, c.GENOTYPE AS GENOTYPE, p.GENOTYPE AS PARENT_GENOTYPE
FROM ECOLI_DATA p JOIN ECOLI_DATA c
ON p.ID = c.PARENT_ID
WHERE c.GENOTYPE & p.GENOTYPE = p.GENOTYPE
ORDER BY c.ID;
- 부모가 없는 개체들은 자연스럽게 JOIN 과정에서 제외!
'SQL' 카테고리의 다른 글
| 프로그래머스 SQL 고득점 Kit - IS NULL [1] (0) | 2026.02.08 |
|---|---|
| 프로그래머스 SQL 고득점 Kit - SELECT[2] (0) | 2026.02.05 |
| 프로그래머스 SQL 고득점 Kit - SELECT[1] (0) | 2026.02.03 |