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

자두·2022년 8월 27일
post-thumbnail

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

요약하자면

  1. 보호소에 들어올 당시에는 중성화 X
  2. 보호소에 나갈 당시에는 중성화 O

한 동물들의 아이디, 생물 종, 이름을 조회하는 아이디 순으로 SQL문 작성

JOIN 과 LIKE 문법 활용

조건 1

보호소에 들어올 당시에는 중성화 X

SELECT ai.ANIMAL_ID, ai.ANIMAL_TYPE, ai.name -- 아이디, 생물 종, 이름을 조회

FROM ANIMAL_INS ai LEFT JOIN ANIMAL_OUTS ao -- LEFT JOIN으로 두 테이블 묶어주기
	ON ai.ANIMAL_ID = ao.ANIMAL_ID
    
WHERE ai.SEX_UPON_INTAKE LIKE 'Intact%' -- LIKE 통해서 중성화X(=Intact) 동물 찾기

조건 2

보호소에 나갈 당시에는 중성화 O

SELECT ai.ANIMAL_ID, ai.ANIMAL_TYPE, ai.name
FROM ANIMAL_INS ai LEFT JOIN ANIMAL_OUTS ao
	ON ai.ANIMAL_ID = ao.ANIMAL_ID
    
WHERE ai.SEX_UPON_INTAKE LIKE 'Intact%'
	AND (ao.SEX_UPON_OUTCOME LIKE 'Spayed%' OR ao.SEX_UPON_OUTCOME LIKE 'Neutered%') -- LIKE 통해서 중성화O(=Spayed,Neutered) 동물 찾기
    
ORDER BY ai.ANIMAL_ID -- 아이디 순으로!

최종

SELECT ai.ANIMAL_ID, ai.ANIMAL_TYPE, ai.name
FROM ANIMAL_INS ai LEFT JOIN ANIMAL_OUTS ao
	ON ai.ANIMAL_ID = ao.ANIMAL_ID    
WHERE ai.SEX_UPON_INTAKE LIKE 'Intact%'
	AND (ao.SEX_UPON_OUTCOME LIKE 'Spayed%' OR ao.SEX_UPON_OUTCOME LIKE 'Neutered%')    
ORDER BY ai.ANIMAL_ID

!문제의 교훈!

까먹은 괄호 다시 보기

profile
하고 싶은 일과 해야 하는 일을 병행하는 데이터 분석기

1개의 댓글

comment-user-thumbnail
2022년 8월 28일

문제에서 중요한 사항을 먼저 확인하고, 풀이 이후에 교훈 정리하시는 방식 너무 좋은 것 같아요!! 이번주 글 잘 보고가요 👍😎👍

답글 달기