[프로그래머스 SQL] 어린 동물 찾기

🖊️ 문제

어린 동물 찾기  

 

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

동물 보호소에 들어온 동물 중 젊은 동물(INTAKE_CONDITION이 Aged가 아닌 경우를 뜻함)의 아이디와 이름을 조회하는 SQL 문을 작성해주세요. 이때 결과는 아이디 순으로 조회해주세요.

 

🖥️ 코드

!= 풀이

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION != 'Aged'
ORDER BY ANIMAL_ID ASC

 

NOT IN 풀이

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION NOT IN ('Aged')
ORDER BY ANIMAL_ID ASC

 

NOT 풀이

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE NOT INTAKE_CONDITION = 'Aged'
ORDER BY ANIMAL_ID ASC

 

🤔 나의 생각

조건을 하나만 명시할 경우는 !=을 사용한다.

 

조건을 여러 개 명시할 경우 OR를 사용하는데 OR의 비교가 선형적이라 조건이 많아질수록 효율이 떨어진다.

따라서 조건이 많을 때는 IN을 사용한다. IN에 명시한 값들을 정렬하고 이진 탐색으로 값을 찾기 때문에 훨씬 효율이 좋다. 그뿐만 아니라 가독성 측면에서도 IN을 사용하는 게 낫고 IN 내부에 서브 쿼리를 작성할 수 있는 장점도 있다.