문제: 2번 형질을 보유하지 않으면서 1번이나 3번 형질을 보유하고 있는 대장균 개체 수(COUNT)를 출력
해결방법:
1. ECOLI_DATA 테이블의 GENOTYPE 컬럼이 10진수이므로 CONV() 함수를 사용해서 2진수로 변환
2. 이렇게 2진수로 변환한 GENOTYPE 은 뒤에서부터 1번, 2번, 3번 형질... 순으로 있으면 1로 표현된다
3. 따라서 SUBSTRING() 함수를 사용하여 변환된 GENOTYPE 열의 -2번째 인덱스의 값이 1이 아니고(2번 형질을 보유하지 않음), 해당 열의 -1번째 또는 -3번째 인덱스의 값이 1인 행만 COUNT하면 된다.
코드 예시
SELECT COUNT(*) AS COUNT
FROM ECOLI_DATA
WHERE
NOT SUBSTRING(CONV(GENOTYPE, 10, 2), -2, 1) = 1
AND (SUBSTRING(CONV(GENOTYPE, 10, 2), -1, 1) = 1
OR
SUBSTRING(CONV(GENOTYPE, 10, 2), -3, 1) = 1)
;
'[SQL] 연습' 카테고리의 다른 글
[SQL] 프로그래머스 가격이 제일 비싼 식품 (0) | 2024.08.23 |
---|---|
[MySQL] 프로그래머스 경기도에 위치한 식품창고 목록 출력하기 (0) | 2024.08.18 |
[SQL] 프로그래머스 대장균들의 자식의 수 구하기 (0) | 2024.08.16 |
[sql] 프로그래머스 이름에 el이 들어가는 동물 찾기 (0) | 2022.11.20 |
[sql] 프로그래머스 없어진 기록 찾기 (0) | 2022.11.19 |