해피 코딩!

[SQL] case 문을 사용한 조권부 쿼리 작성 본문

SQL

[SQL] case 문을 사용한 조권부 쿼리 작성

지속가능한 성장을 2020. 12. 21. 17:40

프로그래머스의 중성화 여부 파악하기
문제를 풀이하던 중 조건에 따른 결과값을 변환하는 SQL을 작성하기 위하여 해당 질의문을 찾아보게 되었습니다.

풀이 답

select ANIMAL_ID, NAME, 
case when SEX_UPON_INTAKE = 'Neutered Male' then 'O'
     when SEX_UPON_INTAKE = 'Spayed Female' then 'O'
     else 'X'
     end '중성화'

from animal_ins
order by animal_id

CASE

조건에 따라 값을 지정해주는 문법 입니다.

if-else의 논리를 SQL 로 옮겨온 구조 입니다.

해당 문법은 프로그래머스에서 사용되는 MySQLORACLE

postgreSQL 까지 지원되는 문법 입니다.

오라클에서는 DECODE라는 함수가 있지만, 보다 가독성이 좋은 CASE 를 추천합니다.

SELECT, WHERE, GROUP BY, HAVING 모두 지원합니다.

CASE 문법 구조

CASE 
--    조건식              리턴 값
      WHEN condition_1  THEN result_1
      WHEN condition_2  THEN result_2
      [WHEN ...]
--     리턴 값
      [ELSE else_result]
END

위 구문은 condition_1일 경우 result_1을 반환 condition_2라면 result_2를 그것이 아니라면 else_result를 반환하는 구문 입니다.

CASE의 표현식에서 ELSE 부분은 생략이 가능하며 ELSE가 없다면 NULL을 반환합니다.

보다 복잡한 구문은 아래 참고에 작성된 링크를 통해 postgreSQL의 문서에 친절히 설명되어 있습니다.

참고

'SQL' 카테고리의 다른 글

[프로그래머스] SQL 코딩테스트 레벨3  (0) 2020.12.22
[SQL] JOIN  (0) 2020.12.22
[SQL] NULL 체크 함수  (0) 2020.12.21
[프로그래머스] SQL 코딩테스트 레벨 2  (0) 2020.12.20
[프로그래머스] SQL 코딩테스트 레벨 1  (0) 2020.12.20
Comments