[Programmers] 중성화 여부 파악하기 (MySQL)

mingreen·2021년 8월 14일
0

코딩 테스트

목록 보기
19/19

문제 📚

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

NAMETYPENULLABLE
ANIMAL_IDVARCHAR(N)FALSE
ANIMAL_TYPEVARCHAR(N)FALSE
DATETIMEDATETIMEFALSE
INTAKE_CONDITIONVARCHAR(N)FALSE
NAMEVARCHAR(N)TRUE
SEX_UPON_INTAKEVARCHAR(N)FALSE

보호소의 동물이 중성화되었는지 아닌지 파악하려 합니다.
중성화된 동물은 SEX_UPON_INTAKE 컬럼에 'Neutered' 또는 'Spayed'라는 단어가 들어있습니다.
동물의 아이디와 이름, 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 중성화가 되어있다면 'O', 아니라면 'X'라고 표시해주세요.

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


풀이 ✏️

  • 중성화 여부 판단은 CASE~WHEN~THEN~END 구문을 사용해서 판단
  • 특정 문자열 포함에 대한 처리는 LIKE 구문 사용

코드(mysql)

-- 코드를 입력하세요
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

CASE-WHEN-THEN 사용하기 📌

  • WHEN - THEN은 항상 같이 사용 되어야 한다.
  • WHEN - THEN은 여러개 사용이 가능하다.
  • ELSE가 존재하면 모든 WHEN - THEN 조건이 TRUE(참)이 아닌 경우 ELSE의 결과값을 반환한다.
  • ELSE가 없고, 조건이 TRUE(참)이 아니면 NULL을 반환한다.
# CASE문 사용 방법 
CASE 
    WHEN 조건1 THEN 결과값1 
    WHEN 조건2 THEN 결과값2 
    WHEN 조건N THEN 결과값N 
    ELSE 결과값 
END

LIKE 사용하기 📌

  • 패턴 검사를 할 때 사용한다.
  • 와일드 카드 '_'는 한글자를 의미하고 '%'는 길이와 관계없이 일치여부를 판단한다.
# LIKE문 사용 방법
(column) LIKE '__a'
(column) LIKE '%a'
profile
주니어 백엔드 개발자의 기록하는 습관 만들기🧑‍💻

0개의 댓글