기록

프로그래머스_보호소에서 중성화한 동물 본문

코딩테스트/SQL

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

youngyin 2021. 1. 28. 14:29

문제

programmers.co.kr/learn/courses/30/lessons/59045

 

코딩테스트 연습 - 보호소에서 중성화한 동물

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

programmers.co.kr

풀이

JOIN과 LIKE를 이용하여 문제를 해결하였다. JOIN은 여러 테이블이을 연결하기 위해 사용하며 ON을 사용하여 테이블을 연결하는 조건을 명시할 수 있다. LIKE절은 특정 문자 또는 특정 문자열을 포함하는 값을 검색하고 있을 때 사용한다.  또한 % 기호는 와일드 문자로 0개 이상의 문자열을 의미한다.

코드

-- spayed: 중성화된
-- Intact: 손대지 않은
-- Neutered: 중성화된

-- #1
SELECT INS.ANIMAL_ID, INS.ANIMAL_TYPE, INS.NAME
FROM ANIMAL_INS AS INS

JOIN ANIMAL_OUTS AS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID

WHERE INS.SEX_UPON_INTAKE LIKE "Intact%" # 보호소에 들어올 당시에는 중성화되지 않았지만
AND OUTS.SEX_UPON_OUTCOME NOT LIKE "Intact%" # 보호소를 나갈 당시에는 중성화된 동물의 아이디

ORDER BY INS.ANIMAL_ID; # 아이디 순으로 조회

-- #2
SELECT INS.ANIMAL_ID, INS.ANIMAL_TYPE, INS.NAME
FROM ANIMAL_INS AS INS

JOIN ANIMAL_OUTS AS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID

WHERE INS.SEX_UPON_INTAKE LIKE "Intact%" # 보호소에 들어올 당시에는 중성화되지 않았지만
AND (OUTS.SEX_UPON_OUTCOME LIKE "Spayed%" OR OUTS.SEX_UPON_OUTCOME LIKE "Neutered%") # 보호소를 나갈 당시에는 중성화된 동물의 아이디

ORDER BY INS.ANIMAL_ID; # 아이디 순으로 조회
Comments