2011-08-26 13:45:50
SQL 4 Oracle 오라클용 sql 실무
▒ 메인 Table 안에서 OVER함수 이용 다중고객 계산하기
▒ 인라인 뷰를 이용 다중고객 계산하기
select decode(eq_YN, 0, '단독고객', '다중고객') 다중고객유무,
mdf_mon 등록년월,
count(*) 총건수,
count(distinct 고객ID) 고객수,
sum(취득점수) 취득점수
from
(
select
A.고객ID,
decode( B.eq_CNT, 1, '0', '1') eq_YN
substr(A.등록년월일,1,6) mdf_mon,
A.취득점수
from 목적_Table A ,
(select B.고객ID ,count(*) eq_CNT
from 목적_Table B
where B.고객상태='활동중
GROUP BY B.고객ID) B
where A.고객상태='활동중'
and A.고객ID= A.고객ID
)
group by decode(eq_22,0,'동일인유','동일인무'), mdf_mon
▒ 서브쿼리를 이용 다중고객 계산하기
select decode(eq_YN, 0, '단독고객', '다중고객') 다중고객유무,
mdf_mon 등록년월,
count(*) 총건수,
count(distinct 고객ID) 고객수,
sum(취득점수) 취득점수
from
(
select
고객ID,
decode( (select count(*)
from 목적_Table B
where B.고객상태='활동중
and B.고객ID=A.고객ID)
,1,'0','1') eq_YN,
substr(등록년월일,1,6) mdf_mon,
취득점수
from 목적_Table A
where 고객상태='활동중'
)
group by decode(eq_22,0,'동일인유','동일인무'), mdf_mon
▒ OVER함수 이용 다중고객 계산하기(인라인 뷰, 서브쿼리보다 응답속도가 탁월하다)
select decode(eq_YN, 0, '단독고객', '다중고객') 다중고객유무,
mdf_mon 등록년월,
count(*) 총건수,
count(distinct 고객ID) 고객수,
sum(취득점수) 취득점수
from
(
select
고객ID,
decode( count(*) OVER(PARTITION BY 고객ID) ,1,'0','1') eq_YN,
substr(등록년월일,1,6) mdf_mon,
취득점수
from 목적_Table
where 고객상태='활동중'
)
group by decode(eq_22,0,'동일인유','동일인무') ,mdf_mon

'SQL4Oracle' 카테고리의 다른 글
| PROCEDURE 상태체크 (0) | 2023.03.10 |
|---|---|
| TABLESPACE 당 사용율 조회 (0) | 2023.03.10 |
| replace가 꼭 필요한 시점 (0) | 2023.03.10 |
| 재미있는 DUAL 테이블2 (0) | 2023.03.10 |
| 재미있는 DUAL 테이블 (0) | 2023.03.10 |