Post

중성화 여부 파악하기

String, Date

중성화 여부 파악하기


문제 설명

다음은 동물 보호소에 들어온 동물의 정보를 담은 ANIMAL_INS 테이블입니다.


ANIMAL_INS 테이블

Column nameTypeNullableDescription
ANIMAL_IDVARCHAR(N)FALSE동물의 아이디
ANIMAL_TYPEVARCHAR(N)FALSE생물 종
DATETIMEDATETIMEFALSE보호 시작일
INTAKE_CONDITIONVARCHAR(N)FALSE보호 시작 시 상태
NAMEVARCHAR(N)TRUE이름
SEX_UPON_INTAKEVARCHAR(N)FALSE성별 및 중성화 여부




문제

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




풀이 과정
  1. 조건 확인
    • SEX_UPON_INTAKE 컬럼에 ‘Neutered’ 또는 ‘Spayed’가 포함된 경우 중성화된 것으로 판단
  2. CASE 문 사용
    • CASE 문 사용해서 중성화 여부를 ‘O’ 또는 ‘X’로 구분
    • LIKE 연산자를 사용해 ‘Neutered’ 또는 ‘Spayed’라는 단어가 포함된 경우 ‘O’ 반환, 그렇지 않으면 ‘X’ 반환
  3. 결과 정렬
    • 정렬 기준에 따라 ORDER BY로 결과 정렬
      • 결과는 ANIMAL_ID 기준으로 오름차순 정렬
  4. 최종 결과 출력
    • SELECT 절에서 ANIMAL_ID, NAME, 중성화 여부 출력
  • 교훈
    • CASE문과 like은 오라클, MySQL 둘 다 완벽하게 호환 된다….




정답

1
2
3
4
5
6
7
8
9
10
11
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;


Tip

  1. CASE 문을 사용한 조건부 처리
  2. LIKE 연산자 사용하여 문자열에서 부분 일치를 검사하는 데 활용




개념 확인

  • CASE 문
    • 조건에 따라 다른 값을 반환하는 제어 구조로, 다중 조건 처리가 가능합니다.
    • 기본 구조 : CASE WHEN 조건1 THEN 결과1 WHEN 조건2 THEN 결과2 ELSE 기본값 END
  • LIKE 연산자
    • 특정 문자열 패턴과의 일치를 검사
      • % : 0개 이상의 문자를 대체하는 와일드카드로 사용
      • _ : 정확히 한 개의 문자를 대체하는 와일드카드로 사용




중성화 여부 파악하기

This post is licensed under Park Juyoung by the author.

Trending Tags