SQL/MY SQL 문제 풀이(프로그래머스)

[MYSQL] PROGRAMMERS_중성화 여부 파악하기

몽총한몽이네 2024. 2. 21. 21:30
반응형

SELECT ANIMAL_ID, NAME, 
	CASE WHEN SEX_UPON_INTAKE like 'Neutered%' then "O" 
	WHEN SEX_UPON_INTAKE like "Spayed%" then "O" else "X" end as "중성화"
FROM ANIMAL_INS
ORDER BY 1

ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냄

 

문제

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

 

IF 조건과 같은 문제 이다. 이럴경우 CASE WHEN A~B 형식으로 풀어주면 된다 판단하였다.

CASE WHEN 구문에서 like를 써보는건 조금 어색해서 맞나 고민했는데 잘 작동하였다. Neutered' 또는 'Spayed' 로 시작하는 단어가 중성화가 된 동물로 구문 파악을 완료하여 뒤에만 %를 기입해 주었다. 그리고 이외는 else로 처리하여 "X"가 나오게 만들어 준 후 이름순으로 정렬하여 처리하였다.

 

CASE WHEN의 경우 가끔 구문이 헷갈릴 때가 있어 주의가 필요 할 것 같다.

 

 

반응형