MYSQL 풀이
sql 공부를 시작한 지 얼마 되지 않아 효율적인 코드는 아닐 수도 있습니다.
더 좋은 풀이가 있을시 ! 공유해주시면 감사하겠습니다!
문제
예시
풀이
중요 ***
중성화를 거치지 않은 동물은 intact
중성화가 된 동물은 Spayed, Neutered 라고 표시
문제 요약
보호소에 들어올 당시(animal_ins) 중성화가 되지 않았지만
보호소를 나갈 당시(animal_outs) 중성화가 된 동물을 출력
1. animal_ins 테이블과 animal_outs 테이블엔 intact, Spayed, Neutered 가 모두 섞여있음.
2. animal_ins 테이블의 intact intact 상태의 동물들이 animal_outs 에서 중성화가 된(Spayed, Neutered) 동물들을 찾아야 함.
3. 상식적으로 중성화가 된 동물에게 다시 .. 붙여줄 수 없음 .. 그것을.. (신이라면.. 가능?)
4. animal_ins 테이블의 sex_upon_intake 컬럼의 상태와
animal_outs 테이블의 sex_upon_outcome 의 상태가 변해있으면 중성화가 완료.
sex_upon_intake <> sex_upon_outcome 의 상태가 같지 않다면 중성화 완료 .
5. 출력은 animal_id 순으로
귀찮지만 as 별칭 모두 사용.
select
b.animal_id as animal_id,
b.animal_type as animal_type,
b.name as name
from
animal_ins as a
right join -- (animal_outs 테이블을 기준으로)
animal_outs as b
on
a.animal_id = b.animal_id
where
a.sex_upon_intake <> b.sex_upon_outcome -- (4번 )
order by
b.animal_id; -- (5번. b.animal_id의 기준으로 출력)
아래는 복붙용 한줄코드
select b.animal_id as animal_id, b.animal_type as animal_type, b.name as name from animal_ins as a right join animal_outs b on a.animal_id = b.animal_id where a.sex_upon_intake <> b.sex_upon_outcome order by b.animal_id;
'알고리즘 > 프로그래머스 - SQL (MySQL)' 카테고리의 다른 글
프로그래머스 7daySQL 챌린지 - 이름에 el이 들어가는 동물 찾기 (0) | 2019.09.08 |
---|---|
프로그래머스 7daySQL 챌린지 - 루시와 엘라 찾기 (0) | 2019.09.08 |