본문 바로가기
Language/Java

[Programmers | ORACLE | SELECT 문제 풀이] 어린 동물 찾기 - Solution with NOT LIKE 'Aged'

by ㅇ달빛천사ㅇ 2024. 6. 5.
728x90

KDT 실무형 스프링 백엔드 엔지니어 양성과정 6기 | SQL CODEKATA

🐶 어린 동물 찾기

🏷 Topic : NOT LIKE



문제 설명

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다.

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


NAME TYPE NULLABLE
ANIMAL_ID VARCHAR(N) FALSE
ANIMAL_TYPE VARCHAR(N) FALSE
DATETIME DATETIME FALSE
INTAKE_CONDITION VARCHAR(N) FALSE
NAME VARCHAR(N) TRUE
SEX_UPON_INTAKE VARCHAR(N) FALSE

동물 보호소에 들어온 동물 중 젊은 동물1의 아이디와 이름을 조회하는 SQL 문을 작성해주세요.
이때 결과는 아이디 순으로 조회해주세요.


예시

예를 들어 ANIMAL_INS 테이블이 다음과 같다면


ANIMAL_ID ANIMAL_TYPE DATETIME INTAKE_CONDITION NAME SEX_UPON_INTAKE
A365172 Dog 2014-08-26 12:53:00 Normal Diablo Neutered Male
A367012 Dog 2015-09-16 09:06:00 Sick Miller Neutered Male
A365302 Dog 2017-01-08 16:34:00 Aged Minnie Spayed Female
A381217 Dog 2017-07-08 09:41:00 Sick Cherokee Neutered Male

이 중 젊은 동물은 Diablo, Miller, Cherokee입니다. 따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.


본 문제는 Kaggle의 "Austin Animal Center Shelter Intakes and Outcomes"에서 제공하는 데이터를 사용하였으며 ODbL의 적용을 받습니다.


INTAKE_CONDITION이 Aged가 아닌 경우를 뜻함


✔ Solution with NOT LIKE 'Aged'

SELECT ANIMAL_ID
       , NAME 
FROM ANIMAL_INS 
WHERE INTAKE_CONDITION NOT LIKE 'Aged'
ORDER BY ANIMAL_ID;
채점 결과

💥 오늘 만난 문제 & 나의 시도 💦 & 해결 방법 👍

📌 오늘 만난 문제의 Point! : 동물 보호소에 들어온 동물 중 젊은 동물의 아이디와 이름을 조회하라!


1. ANIMAL_INS 테이블 조회하기

SELECT *
FROM ANIMAL_INS;
실행 결과

조회 결과를 보면 INTAKE_CONDITION 값이 'Aged'인 행들이 보인다.

실행 결과

2. 앞의 조회 결과에서 INTAKE_CONDITION이 'Aged'인 행들을 제거하자

WHERE절에 INTAKE_CONDITION NOT LIKE 'Aged'를 추가하자.

SELECT *
FROM ANIMAL_INS
WHERE INTAKE_CONDITION NOT LIKE 'Aged';
실행 결과

INTAKE_CONDITION이 'Aged'인 행들이 제거되었다.

실행 결과

3. ANIMAL_IDNAME 칼럼만 조회하자.

SELECT ANIMAL_ID
       , NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION NOT LIKE 'Aged';
실행 결과

NTAKE_CONDITION이 'Aged'인 행들이 제거되었다.

실행 결과

ANIMAL_ID로 정렬되어 있는 느낌이지만 ORER BY를 안해주면 틀렸다고 뜬다.

4. ANIMAL_ID를 기준으로 오름차순 정렬을 해 주자.

SELECT ANIMAL_ID
       , NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION NOT LIKE 'Aged'
ORDER BY ANIMAL_ID;
실행 결과 실행 결과

 

🎉 오늘의 문제 풀이 성공! 🎉

 

💬 무엇을 새롭게 알았는지

WHERE절의 NOT LIKE를
WHERE INTAKE_CONDITION NOT LIKE 'Aged'라고 써도 되고
WHERE NOT INTAKE_CONDITION LIKE 'Aged'라고 써도 되는 구나.

728x90


Top