본문 바로가기
SQL

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

by 코리니덕 2021. 8. 29.

https://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

 

내 풀이

- 보호소에 들어온 후, 중성화 된 동물을 찾으니 INS가 기준 테이블

사실 뭐, OUTS가 기준이 되어도 같은 컬럼을 가지고 있기에 상관 없을 것 같다.

SELECT INS.ANIMAL_ID, INS.ANIMAL_TYPE, INS.NAME
FROM ANIMAL_INS INS
LEFT JOIN ANIMAL_OUTS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE INS.SEX_UPON_INTAKE LIKE 'INTACT%'
AND (
    OUTS.SEX_UPON_OUTCOME LIKE 'NEUTERED%' 
    OR 
    OUTS.SEX_UPON_OUTCOME LIKE 'SPAYED%')
ORDER BY ANIMAL_ID

 

다른 사람 풀이

- !=를 이용해서 완전 간단하게 풀었다

- 내 풀이가 중복이 좀 있는 거 같아서 찾아보니 역시 더 간단한 방법이 존재한다.

SELECT INS.ANIMAL_ID, INS.ANIMAL_TYPE, INS.NAME
FROM ANIMAL_INS INS
LEFT JOIN ANIMAL_OUTS OUTS
ON INS.ANIMAL_ID = OUTS.ANIMAL_ID
WHERE INS.SEX_UPON_INTAKE != OUTS.SEX_UPON_OUTCOME
ORDER BY ANIMAL_ID

 

*느낀점

프로그래머스의 JOIN부분을 풀어보니 웬만한 건 LEFT JOIN으로 다 되는 느낌이다

그래도 다른 JOIN도 알아둬야겠다.