문제

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

NAME TYPE NULLABLE
ANIMAL_ID VARCHAR(N) FALSE
ANIMAL_TYPE VARCHAR(N) FALSE
DATETIME DATETIME FALSE
INTAKE_CONDITION VARCHAR(N) FALSE
NAME VARCHAR(N) TRUE
SEX_UPON_INTAKE VARCHAR(N) FALSE

이때 결과는 아이디 순으로 조회해주세요. 예를 들어 ANIMAL_INS 테이블이 다음과 같다면

ANIMAL_ID ANIMAL_TYPE DATETIME INTAKE_CONDITION **NAME ** SEX_UPON_INTAKE
A373219 Cat 2014-07-29 11:43:00 Normal Ella Spayed Female
A377750 Dog 2017-10-25 17:17:00 Normal Lucy Spayed Female

SQL문을 실행하면 다음과 같이 나와야 합니다.

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 ;

열을 새로 만들어 조건에 맞춰 값을 추가할 때 WHEN CASE 구문을 사용하는 것 같다.
그리고 값을 넣어줄 열을 END AS 로 넣어주면 완성이다.

WHERE은 열들에 조건을 부여해 값을 찾아낸다면 WHEN은 조건을 부여하는 값들을 조건에 부합하면 값을 변경하고 수정하는 것이 가능하다.