코딩 테스트/SQL

보호소에서 중성화한 동물

susinlee 2024. 12. 11. 09:52

[문제]
보호소에서 중성화 수술을 거친 동물 정보를 알아보려 합니다. 보호소에 들어올 당시에는 중성화되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 아이디와 생물 종, 이름을 아이디 순으로 조회하는 SQL 문을 작성해주세요.


[단계별 풀이]
1. ANIMAL_INS 테이블과 ANIMAL_OUTS 테이블을 ANIMAL_ID 기준으로 JOIN

2. INS의 SEX_UPON_INTAKE가 'Intact' 이면서 OUTS의 SEX_UPON_OUTCOME이 'Spayed' 또는 'Neutered' 인 행을 필터링

3. 아이디와 생물 종, 이름을 선택

4. ID 순으로 오름차순 정렬

 

참고: REGEXP보다 LIKE 연산자가 단순문자열 패턴 매칭이기 때문에 좀 더 빠릅니다.


[정답]

SELECT I.ANIMAL_ID,
       I.ANIMAL_TYPE,
       I.NAME
FROM ANIMAL_INS I
JOIN ANIMAL_OUTS O
ON I.ANIMAL_ID = O.ANIMAL_ID
WHERE I.SEX_UPON_INTAKE REGEXP 'Intact'
AND O.SEX_UPON_OUTCOME REGEXP 'Spayed|Neutered'
ORDER BY I.ANIMAL_ID