본문 바로가기
알고리즘/SQL

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

by canoe726 2020. 11. 20.
728x90

- 문제 핵심 조건

 

1. 보호소에 들어올 당시에는 중성화 되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 아이디와 생물 조회

 

=> 보호소에 들어올 당시에는 중성화 되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물 : ins 테이블과 outs 테이블 모두 동물의 ID가 같아야 하고 존재해야 하므로 INNER JOIN

 

=> 보호소에 들어올 당시에는 중성화 되지 않음 : Spayed 와  Neutered 를 포함하지 않음 -> LIKE, AND

 

=> 보호소를 나갈 당시에는 중성화 되지 않음 : Spayed 또는 Neutered 를 포함함 -> LIKE, OR

 

* 중성화를 거치지 않은 동물 : Intact, 중성화를 거친 동물 : Spayed 또는 Neutered

 

 

2. 이름을 조회하는 아이디 순으로 조회

 

=> 아이디 순으로 조회 : ORDER BY

 

 

* 테이블 : ANIMAL_INS(보호소에 들어온 동물들), ANIMAL_OUTS(보호소에서 나간 동물들)

 

* 칼럼명 : ANIMAL_ID(아이디), NAME(이름), DATETIME(보호시작일)

 

 

- 정답 코드

 

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 NOT LIKE "SPAYED%") AND (INS.SEX_UPON_INTAKE NOT LIKE "NEUTERED%")) 
AND ((OUTS.SEX_UPON_OUTCOME LIKE "SPAYED%") OR (OUTS.SEX_UPON_OUTCOME LIKE "NEUTERED%")) 
ORDER BY INS.ANIMAL_ID

 

 

- 문제링크 : 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

 

728x90

댓글