본문 바로가기
SQL/문제풀이

프로그래머스 보호소에서 중성화한 동물 풀이(MySQL)

by wakestand 2019. 9. 7.
반응형

 

사이트명 : 프로그래머스(Programmers)

문제명 : 보호소에서 중성화한 동물

SQL : MySQL

 

문제를 간단히 요약해보자면

ANIMAL_INS 테이블에서 중성화하지 않은 값(SEX_UPON_INTAKE 부분에 'Intact'가 붙은)만 가져와서

 

ANIMAL_OUT 테이블에서는 중성화가 된 값

(SEX_UPON_OUTCOME 부분에 'Spayed', 'Neutered')들을 ANIMAL_OUT의 ANIMAL_ID로 정렬해 출력하라는 얘기다

 

내 풀이방법은 아래와 같은데

 

서브쿼리를 사용해 ANIMAL_INS 테이블의 중성화하지 않은 값만 가져오는데

LIKE를 활용해 "%Intact%" 로 중성화하지 않은 값들만 가져올 수 있다

 

이후 바깥에서 ANIMAL_INS(SQ1) 테이블의 ANIMAL_ID와 ANIMAL_OUTS의 ANIMAL_ID가 같으면서

ANIMAL_OUTS의 SEX_UPON_OUTCOME이 "%Intact%"가 들어있지 않은 값들만 가져오면

 

나머지 값들은 중성화한 Spayed 혹은 Neutered가 들어오게 되니

ANIMAL_INS 테이블에서 중성화하지 않은 행만 가져와서

ANIMAL_OUTS 테이블에서 중성화한 행들만 출력할 수 있게 된다

 

마지막으로 프로그래머스에 바로 적용 가능한 코드는 아래와 같다

 

-- 코드를 입력하세요
SELECT B.ANIMAL_ID, B.ANIMAL_TYPE, B.NAME
FROM
    (
    SELECT *
    FROM ANIMAL_INS A
    WHERE SEX_UPON_INTAKE LIKE "%Intact%"
    ) SQ1, ANIMAL_OUTS B
WHERE SQ1.ANIMAL_ID = B.ANIMAL_ID
AND B.SEX_UPON_OUTCOME NOT LIKE "%Intact%"
반응형

댓글