JiYoung Dev 🖥

[database 고급] case문 (2023.08.08) 본문

full stack/database

[database 고급] case문 (2023.08.08)

Shinjio 2023. 8. 8. 15:26

조인 문법

-- 조인으로 가져오는 경우 
SELECT A.CUST_ID
     , A.CUST_NAME
     , A.SCORE
     , B.GRADE_NAME
  FROM TB_CUST A
     , TB_GRADE B
 WHERE A.SCORE BETWEEN B.STS_SCORE AND B.END_SCORE;

 

서브쿼리 문법

-- 서브 쿼리로 가져오는 경우
SELECT A.CUST_ID
      , A.CUST_NAME
      , A.SCORE
      , (
          SELECT GRADE_NAME
            FROM TB_GRADE
           WHERE A.SCORE BETWEEN STS_SCORE AND END_SCORE) AS GRADE_NAME
  FROM TB_CUST A;

 

DECODE 문법

-- DECODE로 가져오는 경우
SELECT A.CUST_ID
     , A.CUST_NAME
     , A.SCORE
     , DECODE(CEIL(SCORE/20), 0, '브론즈', 1, '브론즈', 2, '실버', 3, '골드', 4, 'VIP', 5, 'VVIP') AS GRADE_NAME
  FROM TB_CUST A;

 

 

score/20 을 했을 때 0 이면 '브론즈', 1이면 브론즈, 2이면 실버 .... → switch문과 유사함

 

-- 함수

  • CEIL : 올림
  • ROUND : 반올림
  • FLOOR : 내림

 

CASE 문법

-- CASE 문법으로 가져올 경우
SELECT A.CUST_ID
     , A.CUST_NAME
     , A.SCORE
     , CASE WHEN SCORE > 100 THEN '범위오류'
            WHEN SCORE >= 81 THEN 'VVIP'
            WHEN SCORE >=61 THEN 'VIP'
            WHEN SCORE >=41 THEN '골드'
            WHEN SCORE >=21 THEN '실버'
            WHEN SCORE >= 0 THEN '브론즈'
            ELSE '범위오류'
                END AS GRADE_NAME
  FROM TB_CUST A;

 

 

주의 !!  위에서부터 실행하여 조건이 맞으면 아랫부분은 검사하지 않고 끝을 냄