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_CONDITIONNOT LIKE 'Aged'를 추가하자.
SELECT *
FROM ANIMAL_INS
WHERE INTAKE_CONDITION NOT LIKE 'Aged';
실행 결과
INTAKE_CONDITION이 'Aged'인 행들이 제거되었다.
3. ANIMAL_ID와 NAME 칼럼만 조회하자.
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'라고 써도 되는 구나.