/////
Search
Duplicate

중성화 여부 파악하기

태그
String
CASE
한 번 더 체크
목차

문제

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다.
ANIMAL_INS 테이블 구조는 다음과 같으며,
ANIMAL_IDANIMAL_TYPEDATETIMEINTAKE_CONDITIONNAMESEX_UPON_INTAKE 는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
보호소의 동물이 중성화되었는지 아닌지 파악하려 합니다. 중성화된 동물은 SEX_UPON_INTAKE 컬럼에 'Neutered' 또는 'Spayed'라는 단어가 들어있습니다. 동물의 아이디와 이름, 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 중성화가 되어있다면 'O', 아니라면 'X'라고 표시해주세요. ※ 컬럼 이름은 일치하지 않아도 됩니다.

예시

예를 들어 ANIMAL_INS 테이블이 다음과 같다면
중성화한 동물: Elijah, Ella
중성화하지 않은 동물: Maxwell 2
따라서 SQL문을 실행하면 다음과 같이 나와야 합니다.

정답

SELECT ANIMAL_ID, NAME, CASE WHEN SEX_UPON_INTAKE LIKE '%Neutered%' or SEX_UPON_INTAKE LIKE '%Spayed%' THEN 'O' ELSE 'X' END as 중성화 FROM ANIMAL_INS ORDER BY ANIMAL_ID;
SQL
복사

풀이

와일드카드와 CASE 표현 사용 방법을 묻는 문제이다.
CASE 표현 중 SEARCHED_CASE_EXPRESSION의 사용 방법은 다음과 같다.
CASE WHEN 조건 THEN 리턴 표현식 ELSE 대체 표현식 END;
SQL
복사
→ 조건이 참인 경우 리턴 표현식을, 거짓인 경우에는 대체 표현식을 수행한다.
문제에서는 조건이 SEX_UPON_INTAKE에 ‘Neutered’가 들어가거나, ‘Spayed’가 들어가는 것이고 리턴 표현식은 ‘O’이다. 그리고 대체 표현식은 ‘X’이다.
CASE WHEN SEX_UPON_INTAKE LIKE '%Neutered%' or SEX_UPON_INTAKE LIKE '%Spayed%' THEN 'O' ELSE 'X' END as 중성화
SQL
복사