문제 : https://programmers.co.kr/learn/courses/30/lessons/59045
ANIMAL_INS의 SEX_UPON_INTAKE는 Intact Male or Intact Female이고, ANIMAL_OUTS의 SEX_UPON_OUTCOME은 Spayed Male or Spayed Female or Neutered Male or Neutered Female인 동물의 ID, TYPE, NAME을 찾는 문제입니다.
풀이
SELECT A.ANIMAL_ID, A.ANIMAL_TYPE, A.NAME
FROM ANIMAL_INS A, ANIMAL_OUTS B
WHERE A.ANIMAL_ID = B.ANIMAL_ID
AND A.SEX_UPON_INTAKE LIKE 'Intact%'
AND (B.SEX_UPON_OUTCOME LIKE 'Spayed%' OR B.SEX_UPON_OUTCOME LIKE 'Neutered%')
ORDER BY A.ANIMAL_ID
까다로운 JOIN문이 아니기 때문에 ANIMAL_ID 로 JOIN을 한 후, LIKE 문을 이용해 SEX_UPON_INTAKE와 SEX_UPON_OUTCOME 을 체크해 주었습니다.
저는 처음에 B.SEX_UPON_OUTCOME을 찾을 때 OR을 사용해서 두개를 적었는데, 그 대신 NOT LIKE를 사용할 수 있습니다.
풀이 - NOT LIKE 사용
SELECT A.ANIMAL_ID, A.ANIMAL_TYPE, A.NAME
FROM ANIMAL_INS A, ANIMAL_OUTS B
WHERE A.ANIMAL_ID = B.ANIMAL_ID
AND A.SEX_UPON_INTAKE LIKE 'Intact%'
AND B.SEX_UPON_OUTCOME NOT LIKE 'Intact%'
ORDER BY A.ANIMAL_ID
더 깔끔해졌습니당!
'개발 > database' 카테고리의 다른 글
[Oracle] programmers - 중성화 여부 파악하기 (0) | 2021.08.05 |
---|---|
[Oracle] programmers - 이름에 el이 들어가는 동물 찾기 (0) | 2021.08.05 |
[Oracle] programmers - 오랜 기간 보호한 동물(1) (0) | 2021.08.05 |
[Oracle] programmers - 없어진 기록 찾기 (0) | 2021.08.05 |
[programmers]sql-입양 시각 구하기(1) (0) | 2021.02.26 |