문제 설명
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
NAMETYPENULLABLEANIMAL_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의 외래 키입니다.
NAMETYPENULLABLEANIMAL_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 : 들어올 때 중성화를 한 경우
-> 중성화를 안한걸로 만들순 없기때문에 서로일치하여 조회되지않음
'공부 > MySQL' 카테고리의 다른 글
[프로그래머스] 입양 시각 구하기 (0) | 2022.09.16 |
---|---|
MySQL 성능향상 (0) | 2022.02.26 |