DBMS/PostgreSQL
[PostgreSQL] 조건에 따라 다른값 보여주기 (CASE WHEN ~ ELSE ~ END)
썸머워즈
2021. 5. 19. 11:00
반응형
PostgreSQL에서 조건에 따라 다른값을 보여주는 CASE WHEN ~ END 구문에 대해 알아보자.
▷ 구문
CASE WHEN condition_1 THEN result_1
WHEN condition_2 THEN result_2
[WHEN...]
[ELSE else_result]
END
여기서 ELSE 부분 역시 생략이 가능하지만 위에서 만족하는 조건이 없으면 NULL을 반환하니 상황에 따라 뭐라도 넣어주는것이 좋을 수 있다.
CASE WHEN 구문은 PostgreSQL 에서만 존재하는건 아니라서 오라클 등등에서 사용할 수 있으니 이참에 잘 알아두자.
▶예제1) 일반 구문 형식
SELECT
CASE WHEN score IS NOT NULL THEN 'D'
ELSE 'F'
END AS code_score
FROM mine
▶예제2) CASE WHEN 다중 구문
SELECT
CASE WHEN score > 90 THEN 'A'
WHEN score > 70 THEN 'B'
WHEN score > 50 THEN 'C'
WHEN score > 30 THEN 'D'
ELSE 'F'
END AS code_score
FROM mine
▶예제3) CASE WHEN 중첩 구문
SELECT
CASE WHEN score > 90 THEN
CASE WHEN score >= 95 THEN 'A+'
ELSE 'A'
END
WHEN score > 70 THEN
CASE WHEN score >= 80 THEN 'B+'
ELSE 'B'
END
WHEN score > 50 THEN
CASE WHEN score >= 60 THEN 'C+'
ELSE 'C'
END
WHEN score > 30 THEN 'D'
ELSE 'F'
END AS code_score
FROM mine
이 밖에도 사용자 정의 함수(function) 호출, where 절에서의 사용 등 사용처가 많으니 알아두면 좋다.
반응형