본문 바로가기
갭알 ☠️/SQL

[프로그래머스/SQL] 보호소에서 중성화한 동물 (MySQL, Oracle)

by Niyaoh 2022. 8. 12.

https://school.programmers.co.kr/learn/courses/30/lessons/59045

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

ANIMAL_INS 테이블

NAME TYPE NULLABLE INFO
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 VARHCAR(N) FALSE 성별 및 중성화 여부

ANIMAL_OUTS 테이블

NAME TYPE NULLABLE INFO
ANIMAL_ID VARCHAR(N) FALSE 아이디
ANIMAL_TYPE VARCHAR(N) FALSE 종류
DATETIME DATETIME FALSE 보호 시작일
NAME VARCHAR(N) TRUE 이름
SEX_UPON_INTAKE VARHCAR(N) FALSE 성별 및 중성화 여부

 

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

 

 

▼ 해석 및 풀이

MySQL

/*
[테이블] : ANIMAL_INS, ANIMAL_OUTS
[컬럼명] : ANIMAL_ID, ANIMAL_TYPE, NAME
[조건] : INS 테이블에서는 SEX_UPON_INTAKE가 '%Intact%'로 되어있지만 OUTS 테이블에서는 '%Spayed%' 또는 '%Neutered%'로 되어있는 데이터들을 ID ASC 순으로 조회.
*/

SELECT ANIMAL_ID, ANIMAL_TYPE, NAME
FROM ANIMAL_OUTS
WHERE (SEX_UPON_OUTCOME LIKE '%Spayed%' OR SEX_UPON_OUTCOME LIKE '%Neutered%') 
AND ANIMAL_ID IN (SELECT ANIMAL_ID FROM ANIMAL_INS WHERE SEX_UPON_INTAKE LIKE '%Intact%') 
ORDER BY ANIMAL_ID;

Oracle

SELECT ANIMAL_ID, ANIMAL_TYPE, NAME
FROM ANIMAL_INS
WHERE SEX_UPON_INTAKE LIKE '%Intact%'
INTERSECT
SELECT ANIMAL_ID, ANIMAL_TYPE, NAME
FROM ANIMAL_OUTS
WHERE SEX_UPON_OUTCOME LIKE '%Spayed%' OR SEX_UPON_OUTCOME LIKE '%Neutered%';

댓글