코딩 테스트/SQL

[프로그래머스 - LEVEL 2] 부모의 형질을 모두 가지는 대장균 찾기

macbook2 2026. 2. 12. 18:54

https://school.programmers.co.kr/learn/courses/30/lessons/301647#qna

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr


문제

부모의 형질을 모두 보유한 대장균의 ID(ID), 대장균의 형질(GENOTYPE), 부모 대장균의 형질(PARENT_GENOTYPE)을 출력하는 SQL 문을 작성해주세요. 이때 결과는 ID에 대해 오름차순 정렬해주세요.

풀이

-- 코드를 작성해주세요
SELECT a1.id, a1.genotype, a2.genotype AS parent_genotype
FROM ecoli_data a1
LEFT JOIN ecoli_data a2
    ON a1.parent_id = a2.id
WHERE (a1.genotype & a2.genotype) = a2.genotype 
ORDER BY a1.id;

 

같은 테이블네 종속된 컬럼쌍이 존재하므로 셀프조인 사용. -> a1은 일반 id용 테이블, a2는 parent_id용 테이블

a1테이블은 부모의 형질을 모두 가지고 있어야 하므로 교집합 했을시 부모의 형질만 튀어나옴

따라서 조건절에 (a1.genotype & a2.genotype) = a2.genotype  와 같이 연산