일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- JOIN
- DP
- Java
- select
- 동적계획법
- 반복문
- 오라클
- 데이터베이스
- darkest dark
- SQL
- 10951
- db
- n x 2 타일링 2
- 문자열
- 소숫점처리
- 알고리즘
- algoritm
- 백준
- 변수
- 그대로 출력하기
- oracle
- 자바
- 데이터길이
- Algorithm
- 2156
- ANSI JOIN
- Dynamic Programming
- Database
- 입출력
- Eclipse
Archives
- Today
- Total
Cracking Code
SQL - CASE 본문
SQL에서도 다른 개발 언어와 같이 조건별로 데이터 리턴이 가능합니다.
CASE WHEN THEN END와 DECODE 함수가 있습니다.
본문에선 CASE를 먼저 알아보도록 하겠습니다.
CASE (ANSI)
CASE expr WHEN comparison_expr1 THEN return_expr1
[WHEN comparison_expr2 THEN return_expr2 ...
WHEN comparison_exprn THEN return_exprn
ELSE else_expr]
END
CASE는 일반 연산 시와 비교 연산 시에 따라 컬럼(expr)의 위치가 조금 바뀝니다.
예제로 알아보겠습니다.
사원 테이블에서 사원의 번호, 이름, 급여, 급여의 배수를 한 값
직업이 ANALYST인 경우 급여에 1.1배
CLERK인 경우 1.2배
MANAGER인 경우 1.3배
PRESIDENT인 경우 1.4배
SALESMAN일 경우 1.5배
나머지는 그대로 하여 출력해봅시다.
SELECT EMPNO, ENAME, SAL, JOB,
CASE JOB WHEN 'ANALYST' THEN SAL * 1.1
WHEN 'CLERK' THEN SAL * 1.2
WHEN 'MAMAGER' THEN SAL * 1.3
WHEN 'PRESIDENT' THEN SAL * 1.4
WHEN 'SALESMAN' THEN SAL * 1.5
ELSE SAL
END 급여
FROM EMP;
JOB 컬럼의 데이터에 따라서 곱셈 연산을 따로 해주는 모습입니다.
비교 연산의 경우도 알아볼까요?
비교 연산 시에는 컬럼이 CASE와 WHEN 사이에서 빠지고
WHERE 절의 비교 연산 처럼 일일이 다 넣어줍니다.
사원 테이블의 사원 번호, 이름, 급여를 출력하는데
급여가 각각 1000, 2000, 3000, 4000, 5000 이하일 때 등급을 E, D, C, B, A로 나눠 출력해봅시다.
급여별로 등급이 잘 나뉘어 출력되는 모습을 볼 수 있습니다.
다음 시간엔 오라클에서만 사용할 수 있는 DECODE 함수에 대해 알아보겠습니다.😁
'Database' 카테고리의 다른 글
SQL - SUM, AVG, MAX, MIN, COUNT (0) | 2020.07.19 |
---|---|
SQL - DECODE (0) | 2020.07.19 |
SQL - TO_CHAR, TO_NUMBER, TO_DATE (0) | 2020.07.19 |
SQL - MONTHS_BETWEEN, ADD_MONTHS, NEXT_DAY (0) | 2020.07.18 |
SQL - CEIL, FLOOR, ROUND,TRUNC (0) | 2020.07.17 |
Comments