알고리즘 문제/프로그래머스

프로그래머스 부모의 형질을 모두 가지는 대장균 찾기 [Lv. 2] (MySQL)

우대비 2024. 10. 16. 21:06
반응형
 

프로그래머스

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

programmers.co.kr

EOCLI_DATA 테이블이 있을때, ID, GENOTYPE, 그리고 부모의 GENOTYPE을 출력하는 SQL문을 작성해주세요 (부모의 GENOTYPEPARENT_ID id값을 확인할 수 있으며, GENOTYPE을 이진수로 변환했을 때, 자식 형질의 비트부모 형질의 비트포함되어있는 것만 출력합니다.)

 

 

SELECT A.ID, A.GENOTYPE, B.GENOTYPE AS PARENT_GENOTYPE
FROM ECOLI_DATA A, ECOLI_DATA B
WHERE A.PARENT_ID = B.ID AND A.GENOTYPE & B.GENOTYPE = B.GENOTYPE
ORDER BY ID ASC

 

 

SELECT A.ID, A.GENOTYPE, B.GENOTYPE AS PARENT_GENOTYPE

 

  • 테이블 ECOLI_DATA에서 자식의 ID와 유전자형(GENOTYPE), 그리고 부모의 유전자형(GENOTYPE)을 선택합니다.

 

 

FROM ECOLI_DATA A, ECOLI_DATA B

 

  • 같은 테이블인 ECOLI_DATA를 두 번 참조합니다.
  • A: 자식 데이터로 사용할 테이블의 별칭
  • B: 부모 데이터로 사용할 테이블의 별칭

 

WHERE A.PARENT_ID = B.ID

 

 

  • 자식 데이터(A)의 PARENT_ID가 부모 데이터(B)의 ID와 동일한 경우를 찾습니다.
  • 즉, 자식과 부모의 관계를 설정합니다.

 

AND A.GENOTYPE & B.GENOTYPE = B.GENOTYPE

 

 

  • 자식의 유전자형(A.GENOTYPE)과 부모의 유전자형(B.GENOTYPE)을 비트 AND 연산(&)합니다.
  • 그 결과가 부모의 유전자형과 동일할 때만 해당 데이터를 반환합니다.
  • 즉, 부모의 유전자형이 자식 유전자형에 완전히 포함되어 있는 경우를 필터링합니다.

 

ORDER BY ID ASC
  • 결과를 자식 데이터의 ID를 기준으로 오름차순(작은 값부터 큰 값 순서)으로 정렬합니다.

 

반응형
LIST