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;

 

+ Recent posts