Milky's note

[프로그래머스] 중성화 여부 파악하기 본문

SQL/SQL 코딩 테스트-프로그래머스

[프로그래머스] 중성화 여부 파악하기

밀뿌 2021. 12. 27. 17:16

프로그래머스 문제를 요약하면 다음과 같다.

조건을 정해주고 맞으면 'O', 아니면 'X' 로 컬럼을 추가해주는 문제이다. 

 

여기서 조건문이랑 LIKE 조건(2개이상)을 사용하는데 헷갈릴 수도 있을 것 같아서 일단 정리한다.

 

 

코딩테스트 연습 - 중성화 여부 파악하기

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디

programmers.co.kr

 

조건을 검색할 때 데이터 컬럼 값을 알면 IN ('데이터', '데이터') 로 검색하면 되는데, 

일부만 안다면 LIKE '%데이터%' 조건을 당연히 사용한다. 

그런데 LIKE IN이 되면 좋겠지만.. 되지 않아서 LIKE 조건 여러개를 사용할 땐 다음과 같이 사용해야한다. 

SELECT * FROM TEST
WHERE NAME LIKE '%A%' OR NAME LIKE '%B%'

 

다음으로는 조건문인 CASE를 사용하는 방법이다.

CASE 구문은 값에 따라 결과를 RETURN 하는 방법과 조건에 따라 결과를 RETURN 하는 방법 두 가지가 있다.

 

#값에 따라 결과 값을 RETURN
CASE 컬럼 
WHEN 값1 THEN 결과1 
WHEN 값2 THEN 결과2 END;

#조건에 따라 결과 값을 RETURN
CASE 
WHEN 조건1 THEN 결과1 
WHEN 조건2 THEN 결과2 END;

CASE 구문은 활용이 많이 되므로 꼭 알아두는 게 좋다!!!!!!!!!!

 

결론으로 프로그래머스 SQL 문제의 답은 다음과 같다. 

중성화라는 조건에 따라 결과 값이 달라지므로 CASE 구문 두번 째 방법을 사용하였고, 

해당 조건 외에 나머지 값을 나타내는 ELSE를 사용하였다. 

SELECT ANIMAL_ID, NAME,
case when SEX_UPON_INTAKE like '%Neutered%' or SEX_UPON_INTAKE like '%Spayed%' THEN 'O' 
ELSE 'X' END 중성화 
FROM ANIMAL_INS
ORDER BY ANIMAL_ID
Comments