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

SQL 문제 - 중성화 여부 파악하기 (IF, REGEXP, CASE)

Debin 2022. 4. 30.
반응형

문제의 링크는 아래와 같습니다.

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

해결 SQL문은 아래와 같다. if문을 사용한 정답과 정규식, 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

--정규식을 이용과 CASE문 이용
SELECT ANIMAL_ID, NAME,
(CASE WHEN SEX_UPON_INTAKE REGEXP'Neutered|Spayed' THEN 'O' ELSE 'X' END )
AS'중성화'
from ANIMAL_INS
order by ANIMAL_ID

if 문

  • if(조건식, 조건식이 참이면 반환되는 값, 조건식이 거짓이면 반환되는 값)

REGEXP 

  • 정규 표현식을 사용해 패턴을 매칭할 수 있게 도와주는 함수

CASE 문

  • WEHN 절에는 참과 거짓을 반환하는 조건식을 기술
  • 해당 조건을 만족해 참이 되는 경우는 THEN 절에 기술한 식이 처리.
  • 이때 WHEN과 THEN을 한데 조합해 지정할 수 있다.
  • 그 어떤 조건식도 만족하지 못한 경우에는 ELSE 절에 기술한 식이 채택된다.
  • ELSE는 생략 가능하며 생략할 경우 'ELSE NULL'로 간주된다.
CASE WHEN 조건식 1 THEN 식 1
	[WHEN 조건식 2 TEHN 식 2 ...]
    [ELSE 식3]
END

 

이상으로 포스팅을 마칩니다.

 

참고 자료

SQL 첫걸음(아사이 아츠시 지음, 박준용 옮김)

 

반응형

댓글