• Home
  • About
    • DEOKHEE LEE photo

      DEOKHEE LEE

      Data science archive

    • Learn More
    • Email
    • Facebook
    • Instagram
    • Github
  • Posts
    • All Posts
    • All Categories
    • All Tags
  • Projects

[SQL] 조건문

21 Jul 2018

Reading time ~1 minute

조건문

조건문이란?

if 조건 평가 then
    참값1;
else
    기본값1;
end if;
if 조건 평가 then
    참값1;
else if 조건 평가 then
    참값2;
end if; 조건평가 then
    참값3;
else
    기본값1;
end if;



조건부 표현식(함수)

DECODE()

  • DECODE(기준값, 비교값, 참값)
  • DECODE() 함수는 기준값을 설정 후 ‘=’(같다)만 비교함
Ex. IT_PROG와 ST_CLERK 일 경우 연봉 인상을 하고 나머지는 그대로

SELECT last_name, job_id, salary,
DECODE(job_id,'IT_PROG',salary*1.10,
              'ST_CLERK',salary*1.15,
                        salary)
FROM employees;

DECODE()는 참값과 거짓값을 반환할 때 문자형인지 숫자형인지 형 타입에 영향을 받는다. 예를 들어 참값을 NULL, 거짓값을 NUMBER TYPE으로 썼다면 NUMBER TYPE이 CHAR TYPE(NULL이 CHAR형이기 때문)으로 자동 형변환되어 값을 출력해준다. 이를 유의하자(문제 135번 참고)



CASE 표현식

  • 현장에서는 주로 CASE를 주로 사용함
  • CASE 표현식은 ‘= (같다)’ 이외 다른 연산자 사용 가능
  • CASE 표현식은 다음과 같이 표현함

표현 1. 기준값을 설정



CASE 기준값
    WHEN 비교값 THEN 참값
    WHEN 비교값 THEN 참값
    ELSE 나머지값
END

표현 2. 기준값을 WHEN 절에

CASE 
    WHEN 기준값 비교연산자 비교값 THEN 참값
    WHEN 기준값 비교연산자 비교값 THEN 참값
    ELSE 나머지값
END
  • 사용 예시
Ex. IT_PROG와 ST_CLERK 일 경우 연봉 인상을 하고 나머지는 그대로

SELECT last_name, job_id, salary,
   CASE job_id
      WHEN 'IT_PROG' THEN salary*1.10
      WHEN 'ST_CLERK' THEN salary*1.15
      ELSE salary
    END
FROM employees;
SELECT last_name, job_id, salary,
   CASE
      WHEN salary < 5000 THEN 'low'
      WHEN salary < 10000 THEN 'medium'
      WHEN salary < 20000 THEN 'good'
      ELSE
          'excellent'
    END
FROM employees;

단일행 함수 : 문자함수, 숫자함수, 날짜함수, 형변환 함수, null 관련된 함수, 조건표현식 함수.

그룹함수 : 여러행을 한꺼번에 처리하는 함수





sql SQL Share Tweet +1