본문 바로가기
[ Computer Science ]/Database_sql

[프로그래머스/MySQL] Lv. 1 아픈 동물 찾기 (SELECT)

by dev charlotte 2024. 10. 17.

0. 문제 소개

출처 : 프로그래머스 

언어 : MySQL 

제목 : 아픈 동물 찾기

레벨 : Lv1

분류 : SELECT

https://school.programmers.co.kr/learn/courses/30/lessons/59036

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

 

1. 문제 조건 및 요구사항

문제 )

동물 보호소에 들어온 동물 중 아픈 동물1의 아이디와 이름을 조회하는 SQL 문을 작성해주세요.

이때 결과는 아이디 순으로 조회해주세요.

 

문제 조건 )

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

ANIMAL_INS 테이블 구조는 다음과 같으며, 

ANIMAL_IDANIMAL_TYPEDATETIMEINTAKE_CONDITIONNAMESEX_UPON_INTAKE

각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

 

출력 조건 )

 

 

2. 정답 풀이

동물 보호소에 들어온 동물 중 아픈 동물(아픔을 표현하는 방법 확인하기)의 아이디와 이름을 조회(select할 값은 아이디와 이름)하는 SQL 문

이때 결과는 아이디 순으로 조회해주세요. (order by 사용)

 

문제에서 동물의 상태 표현은 INTAKE_CONDITION 속성으로 표현하고 있는데 예시에는 Normal, Sick, Aged 이렇게 세 개의 값만 나와있다. 출력 결과를 보면 Sick만 아픈 동물로 취급하고 Aged 처럼 노화 여부는 신경 쓰지 않는다. 

SELECT ANIMAL_ID, NAME
FROM ANIMAL_INS
WHERE INTAKE_CONDITION = 'Sick';

 

Sick이 아닌 다른 값인 ('Normal', 'Aged') 에 속하지 않는다는 의미로 

WHERE INTAKE_CONDITION NOT IN ('Normal', 'Aged');으로 표현해도 되지만

INTAKE_CONDITION 의 값으로 딱 세 가지만 존재한다는 보장이 없기 때문에 

Sick을 명시적으로 지정하는 것이 더 정확하다