본문 바로가기

데이터베이스/MariaDB

[프로그래머스]Lv 2. 중성화 여부 파악하기 / SQL의 조건 / CASE THEN 문법

본 페이지는 C++ 독학을 위해 작성한 포스트입니다 풀이과정도 포함되어있지만 문법공부에 대한 비중이 있습니다.
(+  Java언어 내용도 포함되어있을 수 있습니다. )

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1.문제설명

ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. 
ANIMAL_INS  테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION
, NAME, SEX_UPON_INTAKE 는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.

 

2. 문제해결 접근

  • SELECT 절로 동물의 (아이디)와 (이름), (중성화 여부)를 조회한다.
  • 아이디 순으로 정렬한다 - ORDER BY
  • 조회한 컬럼의 값이
    'Neutered' 이면 'O' 로 표기 하고, 
    'Spayed'이면 'X'라고 표시

 

3.답안 : [언어 : MYSQL ]

1) CASE WHEN 사용

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;

 

 

2) 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

 

 

4.SQL 문법 설명

 

쿼리 구문에서 조건문(IF, Switch)문과 같이 특정 조건에 부합하는 컬럼값을 조회하는 경우에 CASE WHEN을 사용할 수 있다.

 

조건에 따라 TRUE이면 THEN의 결과값으로 조회결과를 표기하고

조건을 만족하지 않으면 디폴트값인 ELSE절의 값으로 결과를 표기한다.

 

# CASE문 사용 방법

CASE
	WHEN 조건1 THEN 결과값1
	WHEN 조건2 THEN 결과값2
	WHEN 조건N THEN 결과값N
	ELSE 결과값
END

 

  • WHEN - THEN은 항상 같이 사용 되어야 한다.
  • WHEN - THEN은 여러개 사용이 가능하다
  • ELSE가 존재하면, 선결 조건이 만족하지 않을 시 ELSE의 결과값을 반환한다.
  • ELSE가 없고 조건이 TRUE가 아니면 NULL을 반환한다.

 

CASE WHEN

https://info-lab.tistory.com/305

 

[MySQL] CASE 문법 사용 하기

MySQL을 사용하다 보면 Query(쿼리) 구문에서 Switch(스위치) 문 혹은 IF문과 같이 조건문을 사용하여 결과값을 내야 하는 경우가 있다. 물론 이런 거 없이 Query 하여 나온 결과를 가져와 Code(코드)상에

info-lab.tistory.com