DB/SQL

조건문

이파댥 2024. 7. 9. 20:07
/*
선택 함수
-- 여러가지 경우에 따라 알맞은 결과를 선택하는 함수
-- IF, SWITCH 와 비슷

-- DECODE(컬럼명 | 계산식, 조건1, 결과1, 조건2, 결과2, ...[,아무것도 만족X])

-- 컬럼명 | 계산식의 값이 일치하는 조건이 있으면
--         해당 조건 오른쪽에 작성된 결과가 반환
*/

-- 예제 1)
---> EMPLOYEE 테이블에서 모든 사원의 이름, 주민번호, 성별 조회
SELECT EMP_NAME, EMP_NO,
    DECODE (SUBSTR(EMP_NO,8,1), -- 주민번호 870808-여덟번째 = 성별   성별은 한 자리
            '1', '남자','2','여자',
            '기타') AS "성별"
FROM EMPLOYEE;
/*
EMP_NAME    EMP_NO          성별
선동일	621231-1985634	    남자
송종기	631112-1548654	    남자
노옹철	861015-1356452	    남자
송은희	631010-2653546	    여자
*/

/*
CASE
    WHEN 조건1 THEN 결과1
    WHEN 조건2 THEN 결과2
    WHEN 조건3 THEN 결과3
    ELSE 결과
END

-- DECODE 는 계산식 | 컬럼 값이 딱 떨어지는 경우 사용 가능
-- CASE 는 계산식 | 컬럼 값을 범위로 지정 가능
*/

-- 예제 1
-- EMPLOYEE 테이블에서 사번, 이름, 급여, 구분을 조회
-- 구분 받는 급여에서 초급 중급 고급 조회
-- 급여가 500 만 이상 고급
-- 급여가 300 만 이상~ 500 만 미만 중급
-- 급여가 300 만 미만 초급
SELECT EMP_ID, EMP_NAME, SALARY, 
    CASE
        WHEN SALARY >= 5000000 THEN '고급' -- WHEN =    IF(SALARY >= 5000000) {
        WHEN SALARY >= 3000000 THEN '중급' -- ELSE IF        System.out.println("고급")
        ELSE '초급'                        -- ELSE       }
    END 구분 -- 표시될 컬럼명
FROM EMPLOYEE;