본문 바로가기
Problem Solving/프로그래머스 SQL

[프로그래머스 SQL] 중성화 여부

by Libi 2021. 8. 11.
반응형

https://programmers.co.kr/learn/courses/30/lessons/59409

 

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

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

programmers.co.kr

[ 문제풀이 ]

조건문을 통해 원하는 컬럼을 처리를 할 수 있는지 묻는 문제이다. 조건문에 자주 사용하는 방법은 IF 문과 CASE WHEN 문이다.

주의해야 할 점은 LIKE 함수는 OR 연산을 적용하지 않는다. 즉, IF 문에서 LIKE 함수를 사용하기 위해선 두 번째 방식으로 해야 한다.

IF (SEX_UPON_INTAKE LIKE '%Neutered%' OR '%Spayed%', 'O', 'X') AS '중성화'
//이 방식은 OR 뒤의 문장을 걸러내지 못함
IF (SEX_UPON_INTAKE LIKE '%Neutered%' OR SEX_UPON_INTAKE LIKE '%Spayed%', 'O', 'X') AS '중성화'
//이 방식처럼 해야 둘다 걸러낼 수 있음

CASE WHEN 문은 조건을 CASE 별로 나누기 때문에 신경 쓸 필요가 없다.

-- IF 문 --
SELECT ANIMAL_ID, NAME, 
      IF (SEX_UPON_INTAKE LIKE '%Neutered%' OR SEX_UPON_INTAKE LIKE '%Spayed%', 'O', 'X') AS '중성화'
FROM ANIMAL_INS
ORDER BY ANIMAL_ID ASC;

-- CASE WHEN 문 --
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 ANIMAL_ID;

 

 

반응형

댓글