오늘은 오라클 함수 중에 DECODE함수에 포스팅을 해 보겠어요
DECODE 구문은 아주 많이 사용되어 집니다.
코드값을 비교하여 변환이 필요할때는 DECODE함수를 많이 사용하는데
비슷한 기능을 하는 CASE WHEN 구문도 있습니다.
CASE WHEN 구문은 여기를 참고 하시구요
1. 테스트를 위해 WITH문을 사용하여 TDATA 라는 데이터를 만들어서 조회한 결과입니다.
이 데이터를 이용하여 DECODE 문장을 적용해 보도록 하겠습니다.
WITH TDATA AS ( SELECT 3 AS 판매량, '미국' 국적, '핸드폰' AS 판매제품 FROM DUAL UNION ALL SELECT 15 AS 판매량, '한국' 국적, '냉장고' AS 판매제품 FROM DUAL UNION ALL SELECT 8 AS 판매량, '대만' 국적, '핸드폰' AS 판매제품 FROM DUAL UNION ALL SELECT 5 AS 판매량, '한국' 국적, '자동차' AS 판매제품 FROM DUAL ) SELECT * FROM TDATA |
|
2. 데이터중에서 고품질인 정보를 읽어보겠어요. 고품질의 조건은 국적이 한국이면 고품질입니다.
고품질여부 필드를 만드는데 국적이 한국이면 고품질, 아니면 공백으로 해서 고품질여부 항목을 만들었어요
SELECT 판매량, 국적, 판매제품 , DECODE(국적, '한국', '고품질','') 고품질여부 FROM TDATA; |
3. 3가지의 정보를 구해 봤어요
1) 총판매량 : 판매량의 총 합계
2) 한국_판매량 : 국적이 한국 정보의 판매량 합계를 구합니다.
3) 한국대만_판매량 : 국적이 한국이거나 대만 정보의 판매량 합계를 구합니다.
SELECT SUM(판매량) AS 총판매량 ,SUM(DECODE(국적, '한국',판매량,0)) 한국_판매량 ,SUM(DECODE(국적, '한국',판매량,'대만',판매량,0)) 한국대만_판매량 FROM TDATA |
4. 4가지의 정보를 구해 봤어요
1) 총판매량 : 판매량의 총 합계
2) 한국_판매량 : 국적이 한국 정보의 판매량 합계를 구합니다.
3) 미국_판매량 : 국적이 미국 정보의 판매량 합계를 구합니다.
4) 대만_판매량 : 국적이 대만 정보의 판매량 합계를 구합니다.
SELECT SUM(판매량) AS 총판매량 ,SUM(DECODE(국적, '한국',판매량,0)) 한국_판매량 ,SUM(DECODE(국적, '미국',판매량,0)) 미국_판매량 ,SUM(DECODE(국적, '대만',판매량,0)) 대만_판매량 FROM TDATA |
4. 판매금액
국적별로 가중치를 줘서 판매금액이라는 항목을 만들었봤어요
한국산이면 개당 10,000, 미국산은 개당 2,000, 대만산은 개당 100 으로 해서
국적, 판매량 값을 가지고 판매금액을 구했어요
SELECT 국적,판매량 ,DECODE(국적, '한국',판매량 * 10000,'미국',판매량 * 2000,'대만',판매량 * 100,판매량 * 10) 판매금액 FROM TDATA |
'SQL > ORACLE함수' 카테고리의 다른 글
오라클 간단한 프로시져 CURSOR,FOR 문 사용하기 (0) | 2014.06.11 |
---|---|
[DBMS비교] Oracle함수, MS-SQL함수 비교 (0) | 2014.06.11 |
MERGE INTO문 INSERT와 UPDATE를 하나의 쿼리로 (0) | 2014.06.11 |
[오라클함수] 오라클 CASE WHEN THEN 구문 (0) | 2014.06.11 |
[오라클함수] GROUP BY 컬럼..컬럼 사용하기 (0) | 2014.06.11 |
[오라클함수] DB LINK 연결 사용 (0) | 2014.06.11 |
[오라클함수] 오라클 행열 바꾸기(CASE WHEN, MAX함수 사용) (0) | 2014.06.11 |
[오라클함수] TRUNC함수를 이용한 소숫점, 날짜 형식 짜르기 (0) | 2014.06.11 |