CODING TEST/MySQL

Lv2 - 중성화 여부 파악하기

iamyuunzo 2025. 7. 21. 14:50

📌 문제 정보

- 문제 이름 : 프로그래머스 - (String, Date) 중성화 여부 파악하기

- 문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/59409

 

 

 

📌 문제 요약

- ANIMAL_INS 테이블 : ANIMAL_ID(동물의 아이디), ANIMAL_TYPE(생물 종), DATETIME(보호 시작일), INTAKE_CONDITION(보호 시작 시 상태), NAME(이름), SEX_UPON_INTAKE(성별 및 중성화 여부)

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

 

예시)

ANIMAL_ID  ANIMAL_TYPE  DATETIME  INTAKE_CONDITION  NAME  SEX_UPON_INTAKE
A355753  Dog  2015-09-10 13:14:00 Normal  Elijah  Neutered Male
A373219  Cat  2014-07-29 11:43:00 Normal  Ella  Spayed Female
A382192  Dog  2015-03-13 13:14:00 Normal  Maxwell 2 Intact Male

중성화한 동물: Elijah, Ella

중성화하지 않은 동물: Maxwell 2

 

출력)

ANIMAL_ID  NAME  중성화
A355753  Elijah  O
A373219  Ella  O
A382192  Maxwell 2  X

 

 

 

📌 내 풀이 및 코드

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 문법이 기억이 안나서 WHERE절데 LIKE를 쓰고 있었는데 원하는 값이 안 나왔음.

 

 

 

📌 새로 배운 문법

<-- 이번 문제에서 새로 배운 Java 문법 정리 -->

** CASE WHEN 조건문 **

- IF ~ ELSE문처럼 조건에 따른 다른 값을 반환할 수 있음.

- 조건을 위에서부터 차례로 검사하고, 처음으로 TRUE가 되는 조건의 THEN값을 반환함. (모두 해당x = ELSE)

- 새 컬럼 이름 지정하려면 END 뒤에 AS로 적어서 함.

CASE
    WHEN 조건1 THEN 값1
    WHEN 조건2 THEN 값2
    ...
    ELSE 기본값
END