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