728x90
반응형

오늘은 오라클 함수 중에 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

 

728x90
반응형
블로그 이미지

nineDeveloper

안녕하세요 현직 개발자 입니다 ~ 빠르게 변화하는 세상에 뒤쳐지지 않도록 우리모두 열심히 공부합시다 ~! 개발공부는 넘나 재미있는 것~!

,