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도 알아둬야겠다.
'SQL' 카테고리의 다른 글
| [프로그래머스 SQL] 오랜 기간 보호한 동물(1) (0) | 2021.08.29 |
|---|---|
| [프로그래머스 SQL] 있었는데요 없었습니다 (0) | 2021.08.29 |
| [프로그래머스 SQL] 없어진 기록 찾기 (0) | 2021.08.28 |
| [프로그래머스 SQL]NULL 처리하기 -> IFNULL, CASE WHEN (0) | 2021.08.28 |
| [프로그래머스 SQL] 입양 시각 구하기(1) (0) | 2021.08.25 |