공부/MySQL

[프로그래머스] 보호소에서 중성화한 동물

Dr.thousand 2022. 9. 16. 13:27
728x90

문제 설명

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

NAMETYPENULLABLE
ANIMAL_ID VARCHAR(N) FALSE
ANIMAL_TYPE VARCHAR(N) FALSE
DATETIME DATETIME FALSE
INTAKE_CONDITION VARCHAR(N) FALSE
NAME VARCHAR(N) TRUE
SEX_UPON_INTAKE VARCHAR(N) FALSE

ANIMAL_OUTS 테이블은 동물 보호소에서 입양 보낸 동물의 정보를 담은 테이블입니다. ANIMAL_OUTS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, NAME, SEX_UPON_OUTCOME는 각각 동물의 아이디, 생물 종, 입양일, 이름, 성별 및 중성화 여부를 나타냅니다. ANIMAL_OUTS 테이블의 ANIMAL_ID는 ANIMAL_INS의 ANIMAL_ID의 외래 키입니다.

NAMETYPENULLABLE
ANIMAL_ID VARCHAR(N) FALSE
ANIMAL_TYPE VARCHAR(N) FALSE
DATETIME DATETIME FALSE
NAME VARCHAR(N) TRUE
SEX_UPON_OUTCOME VARCHAR(N) FALSE

보호소에서 중성화 수술을 거친 동물 정보를 알아보려 합니다. 보호소에 들어올 당시에는 중성화1되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 아이디와 생물 종, 이름을 조회하는 아이디 순으로 조회하는 SQL 문을 작성해주세요.

 


-- 코드를 입력하세요
SELECT 
    IN_ANIMAL.ANIMAL_ID
    ,IN_ANIMAL.ANIMAL_TYPE
    ,IN_ANIMAL.NAME
FROM ANIMAL_INS IN_ANIMAL
    LEFT OUTER JOIN ANIMAL_OUTS OUT_ANIMAL ON IN_ANIMAL.ANIMAL_ID = OUT_ANIMAL.ANIMAL_ID
WHERE 1=1
    AND IN_ANIMAL.SEX_UPON_INTAKE != OUT_ANIMAL.SEX_UPON_OUTCOME

 

 

들어올 때 중성화 여부와 나갈 때 중성화 여부가 다른것을 조회.

CASE : 들어올 때 중성화를 안했고 나갈때 도 안했을경우 

-> 나갈 때도 중성화가 되지않았기 때문에 조회되지 않음

CASE : 들어올 때 중성화를 안했고 나갈 때 했을경우

-> 들어올 때 중성화를 안헀고 나갔을 때 했을경우 서로 일치하지 않기때문에 조회됨

CASE : 들어올 때 중성화를 한 경우

-> 중성화를 안한걸로 만들순 없기때문에 서로일치하여 조회되지않음

728x90
반응형

'공부 > MySQL' 카테고리의 다른 글

[프로그래머스] 입양 시각 구하기  (0) 2022.09.16
MySQL 성능향상  (0) 2022.02.26