코딩테스트/프로그래머스

없어진 기록 찾기 MySQL(프로그래머스)

멍토 2020. 7. 22.

출처 : https://programmers.co.kr/learn/courses/30/lessons/59042

 

코딩테스트 연습 - 없어진 기록 찾기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

문제

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. 

ANIMAL_INS 테이블 구조는 다음과 같으며, 

ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE 

각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.



ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. 

ANIMAL_OUTS 테이블 구조는 다음과 같으며, 

ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME

각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중성화 여부를 나타냅니다. 

ANIMAL_OUTS 테이블의 ANIMAL_ID ANIMAL_INS ANIMAL_ID의 외래 키입니다.





천재지변으로 인해 일부 데이터가 유실되었습니다.

입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요.

 

SELECT ANIMAL_ID, NAME 
FROM ANIMAL_OUTS 
WHERE ANIMAL_ID NOT IN
(
    SELECT ANIMAL_ID 
    FROM ANIMAL_INS
)

 

중첩 쿼리문을 이용하여 문제를 해결 했습니다.


조건문에 다른 쿼리문을 추가 할 수 있는데

ANIMAL_OUTS에 있는 동물은 ANIMAL_INS에 무조건 있어야 한다는 점을 이용하여

ANIMAL_OUTS에 있는데 ANIMAL_INS에 없는 데이터를 찾습니다.


따라서 위의 조건을 만족하는 쿼리문은 위와 같습니다.

 

댓글

💲 광고입니다.