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 절에서의 사용 등 사용처가 많으니 알아두면 좋다.

 

반응형