|
我说过V_HML_EAL_tem只是过程中下一步计算的一个铺垫!
我把过程中下面的代码发上来
- declare global temporary table V_HML_EAL_new(group_id decimal(20,0), EXIST_CUST_C decimal(10,0),EXIST_CUST_R decimal(6,2), ADD_CUST_C decimal(10,0),ADD_CUST_R decimal(6,2), LOSS_CUST_C decimal(10,0),LOSS_CUST_R decimal(6,2),HIGH_EXIST_CUST_C decimal(10,0),HIGH_ADD_CUST_C decimal(10,0), HIGH_LOSS_CUST_C decimal(10,0),MIDD_EXIST_CUST_C decimal(10,0), MIDD_ADD_CUST_C decimal(10,0), MIDD_LOSS_CUST_C decimal(10,0), LOW_EXIST_CUST_C decimal(10,0),LOW_ADD_CUST_C decimal(10,0), LOW_LOSS_CUST_C decimal(10,0),H_EXIST_ADD_LOSS_STRU varchar(50), M_EXIST_ADD_LOSS_STRU varchar(50),L_EXIST_ADD_LOSS_STRU varchar(50), EXIST_H_M_L_STRU varchar(50),ADD_H_M_L_STRU varchar(50), LOSS_H_M_L_STRU varchar(50)) on commit preserve rows not logged with replace;
- insert into session.V_HML_EAL_new (
- group_id , EXIST_CUST_C ,
- EXIST_CUST_R , ADD_CUST_C ,
- ADD_CUST_R, LOSS_CUST_C,
- LOSS_CUST_R,HIGH_EXIST_CUST_C ,
- HIGH_ADD_CUST_C, HIGH_LOSS_CUST_C,
- MIDD_EXIST_CUST_C, MIDD_ADD_CUST_C,
- MIDD_LOSS_CUST_C, LOW_EXIST_CUST_C,
- LOW_ADD_CUST_C, LOW_LOSS_CUST_C,
- H_EXIST_ADD_LOSS_STRU, M_EXIST_ADD_LOSS_STRU,
- L_EXIST_ADD_LOSS_STRU, EXIST_H_M_L_STRU,
- ADD_H_M_L_STRU, LOSS_H_M_L_STRU
- )
- select v.group_id,
- sum(EXIST_CUST_C) as EXIST_CUST_C ,cast(sum(EXIST_CUST_C) as decimal(20,2))*100/sum(v.cust_count) as EXIST_CUST_R
- ,sum(ADD_CUST_C) as ADD_CUST_C,cast(sum(ADD_CUST_C) as decimal(20,2))*100/sum(v.cust_count) as ADD_CUST_R
- ,sum(LOSS_CUST_C) as LOSS_CUST_C,cast(sum(LOSS_CUST_C) as decimal(20,2))*100/sum(v.cust_count) as LOSS_CUST_R,
- sum(case when x.pre_m_arpu_d ='高' then EXIST_CUST_C else 0 end) as HIGH_EXIST_CUST_C ,--高存
- sum(case when x.pre_m_arpu_d ='高' then ADD_CUST_C else 0 end) as HIGH_ADD_CUST_C,--高增
- sum(case when x.pre_m_arpu_d ='高' then LOSS_CUST_C else 0 end) as HIGH_LOSS_CUST_C,--高流
- sum(case when x.pre_m_arpu_d ='中' then EXIST_CUST_C else 0 end) as MIDD_EXIST_CUST_C ,--中存
- sum(case when x.pre_m_arpu_d ='中' then ADD_CUST_C else 0 end) as MIDD_ADD_CUST_C,--中增
- sum(case when x.pre_m_arpu_d ='中' then LOSS_CUST_C else 0 end) as MIDD_LOSS_CUST_C,--中留
- sum(case when x.pre_m_arpu_d ='低' then EXIST_CUST_C else 0 end) as LOW_EXIST_CUST_C ,--低存
- sum(case when x.pre_m_arpu_d ='低' then ADD_CUST_C else 0 end) as LOW_ADD_CUST_C,--低增
- sum(case when x.pre_m_arpu_d ='低' then LOSS_CUST_C else 0 end) as LOW_LOSS_CUST_C,--低留
- case when integer(round(sum(case when x.pre_m_arpu_d ='高' then coalesce(EXIST_CUST_C,0)+coalesce(ADD_CUST_C,0)+coalesce(LOSS_CUST_C,0) else 0 end),0))=0 then null else
- cast(integer(round(cast(sum(case when x.pre_m_arpu_d ='高' then EXIST_CUST_C else 0 end) as decimal(20,2))*100/sum(case when x.pre_m_arpu_d ='高' then coalesce(EXIST_CUST_C,0)+coalesce(ADD_CUST_C,0)+coalesce(LOSS_CUST_C,0) else 0 end),0)) as char(3)) ||':'||
- cast(integer(round(cast(sum(case when x.pre_m_arpu_d ='高' then ADD_CUST_C else 0 end) as decimal(20,2))*100/sum(case when x.pre_m_arpu_d ='高' then coalesce(EXIST_CUST_C,0)+coalesce(ADD_CUST_C,0)+coalesce(LOSS_CUST_C,0) else 0 end),0)) as char(3)) ||':'||
- cast(integer(round(cast(sum(case when x.pre_m_arpu_d ='高' then LOSS_CUST_C else 0 end) as decimal(20,2))*100/sum(case when x.pre_m_arpu_d ='高' then coalesce(EXIST_CUST_C,0)+coalesce(ADD_CUST_C,0)+coalesce(LOSS_CUST_C,0) else 0 end),0)) as char(3)) end as H_EXIST_ADD_LOSS_STRU--高价值客户存/增/流结构
- ,case when integer(round(sum(case when x.pre_m_arpu_d ='中' then coalesce(EXIST_CUST_C,0)+coalesce(ADD_CUST_C,0)+coalesce(LOSS_CUST_C,0) else 0 end),0))=0 then null else
- cast(integer(round(cast(sum(case when x.pre_m_arpu_d ='中' then EXIST_CUST_C else 0 end) as decimal(20,2))*100/sum(case when x.pre_m_arpu_d ='中' then coalesce(EXIST_CUST_C,0)+coalesce(ADD_CUST_C,0)+coalesce(LOSS_CUST_C,0) else 0 end),0)) as char(3)) ||':'||
- cast(integer(round(cast(sum(case when x.pre_m_arpu_d ='中' then ADD_CUST_C else 0 end) as decimal(20,2))*100/sum(case when x.pre_m_arpu_d ='中' then coalesce(EXIST_CUST_C,0)+coalesce(ADD_CUST_C,0)+coalesce(LOSS_CUST_C,0) else 0 end),0)) as char(3)) ||':'||
- cast(integer(round(cast(sum(case when x.pre_m_arpu_d ='中' then LOSS_CUST_C else 0 end) as decimal(20,2))*100/sum(case when x.pre_m_arpu_d ='中' then coalesce(EXIST_CUST_C,0)+coalesce(ADD_CUST_C,0)+coalesce(LOSS_CUST_C,0) else 0 end),0)) as char(3)) end as M_EXIST_ADD_LOSS_STRU--中价值客户存/增/流结构
- ,case when integer(round(sum(case when x.pre_m_arpu_d ='低' then coalesce(EXIST_CUST_C,0)+coalesce(ADD_CUST_C,0)+coalesce(LOSS_CUST_C,0) else 0 end),0))=0 then null else
- cast(integer(round(cast(sum(case when x.pre_m_arpu_d ='低' then EXIST_CUST_C else 0 end) as decimal(20,2))*100/sum(case when x.pre_m_arpu_d ='低' then coalesce(EXIST_CUST_C,0)+coalesce(ADD_CUST_C,0)+coalesce(LOSS_CUST_C,0) else 0 end),0)) as char(3)) ||':'||
- cast(integer(round(cast(sum(case when x.pre_m_arpu_d ='低' then ADD_CUST_C else 0 end) as decimal(20,2))*100/sum(case when x.pre_m_arpu_d ='低' then coalesce(EXIST_CUST_C,0)+coalesce(ADD_CUST_C,0)+coalesce(LOSS_CUST_C,0) else 0 end),0)) as char(3)) ||':'||
- cast(integer(round(cast(sum(case when x.pre_m_arpu_d ='低' then LOSS_CUST_C else 0 end) as decimal(20,2))*100/sum(case when x.pre_m_arpu_d ='低' then coalesce(EXIST_CUST_C,0)+coalesce(ADD_CUST_C,0)+coalesce(LOSS_CUST_C,0) else 0 end),0)) as char(3)) end as L_EXIST_ADD_LOSS_STRU--低价值客户存/增/流结构
- ,cast(integer(round(cast(sum(case when x.pre_m_arpu_d ='高' then EXIST_CUST_C else 0 end) as decimal(20,2))*100/sum(EXIST_CUST_C),0)) as char(3)) ||':'||
- cast(integer(round(cast(sum(case when x.pre_m_arpu_d ='中' then EXIST_CUST_C else 0 end) as decimal(20,2))*100/sum(EXIST_CUST_C),0)) as char(3)) ||':'||
- cast(integer(round(cast(sum(case when x.pre_m_arpu_d ='低' then EXIST_CUST_C else 0 end) as decimal(20,2))*100/sum(EXIST_CUST_C),0)) as char(3)) as EXIST_H_M_L_STRU--存量客户高/中/低价值结构
- ,cast(integer(round(cast(sum(case when x.pre_m_arpu_d ='高' then ADD_CUST_C else 0 end) as decimal(20,2))*100/sum(ADD_CUST_C),0)) as char(3)) ||':'||
- cast(integer(round(cast(sum(case when x.pre_m_arpu_d ='中' then ADD_CUST_C else 0 end) as decimal(20,2))*100/sum(ADD_CUST_C),0)) as char(3)) ||':'||
- cast(integer(round(cast(sum(case when x.pre_m_arpu_d ='低' then ADD_CUST_C else 0 end) as decimal(20,2))*100/sum(ADD_CUST_C),0)) as char(3)) as ADD_H_M_L_STRU--增量客户高/中/低价值结构
- ,cast(integer(round(cast(sum(case when x.pre_m_arpu_d ='高' then LOSS_CUST_C else 0 end) as decimal(20,2))*100/sum(LOSS_CUST_C),0)) as char(3)) ||':'||
- cast(integer(round(cast(sum(case when x.pre_m_arpu_d ='中' then LOSS_CUST_C else 0 end) as decimal(20,2))*100/sum(LOSS_CUST_C),0)) as char(3)) ||':'||
- cast(integer(round(cast(sum(case when x.pre_m_arpu_d ='低' then LOSS_CUST_C else 0 end) as decimal(20,2))*100/sum(LOSS_CUST_C),0)) as char(3)) as LOSS_H_M_L_STRU--流失客户高/中/低价值结构
- from session.V_HML_EAL_tem x inner join session.V_GROUP_COUNT V
- on x.group_id=V.group_id
- group by v.group_id with ur;
复制代码 |
|