|
原帖由 myfriend2010 于 2007-12-12 18:18 发表 ![]()
to:askgyliu
Q:这最近的三个SQL跟最开始的两个SQL是不相同的?
A:是啊,我把10月份的表重新生成并分析后,就这个样子了!这是最新的执行计划,以前的执行计划无法得到了!
我 再 看 了 你 5楼 的 贴 , 和 EXFMT1中 的 SQL, 我 确 信 它 们 是 完 全 不 相 同 的 。
就 以 你 EXFMT1中 的 SQL来 分 析 一 下 吧 。
实 际 是 有 三 个 部 分 :
P1:
select b.cust_group_id as group_id, aa.pre_m_arpu_d,sum(aa.PRE_M_ARPU)
as arpu,sum(cc.m) as m,sum(cc.CLV) as clv, count(b.cust_id) as
EXIST_CUST_C, sum(aa.NOW_ARPU) as EXIST_SUM_NOW_ARPU
from session.V_PRE_EXP_GROUP_CUST1 a inner join
ccp.PAR_CUST_CUST_GRP_ASSOC_200710 b on b.cust_id = a.cust_id
inner join ccp.CUST_CHURN_INFO_200710 aa on
aa.cust_id=a.cust_id inner join ccp.CUST_CCP_INFO_200710 cc on
cc.cust_id=a.cust_id
group by b.cust_group_id,aa.pre_m_arpu_d
P2:
select b.cust_group_id as group_id,sum(cust.PRE_M_ARPU) as arpu,
sum(cc.m) as m,sum(cc.CLV) as clv, count(b.cust_id) as
ADD_CUST_C, cust.pre_m_arpu_d, sum(cust.NOW_ARPU) as
ADD_SUM_NOW_ARPU
from ccp.PAR_CUST_CUST_GRP_ASSOC_200710 b inner join
(select base.cust_id,base.pre_m_arpu_d,base.NOW_ARPU,base.PRE_M_ARPU
from ccp.CUST_CHURN_INFO_200710 base
where on_net_time=4) cust on cust.cust_id=b.cust_id inner join
ccp.CUST_CCP_INFO_200710 cc on cc.cust_id=b.cust_id
group by b.cust_group_id,cust.pre_m_arpu_d
P3:
select a.cust_group_id as group_id,sum(churn.PRE_M_ARPU) as arpu,
sum(cc.m) as m,sum(cc.CLV) as clv, count(a.cust_id) as
LOSS_CUST_C, churn.pre_m_arpu_d, sum(churn.NOW_ARPU) as
LOSS_SUM_NOW_ARPU
from ccp.PAR_CUST_CUST_GRP_ASSOC_200710 a inner join
(select b.cust_id as cust_id,b.pre_m_arpu_d,b.PRE_M_ARPU,b.NOW_ARPU
from ccp.CUST_CHURN_INFO_200710 b
where b.LEAVE_DATE <= '3000-11-30 00:00:00') churn on
churn.cust_id=a.cust_id inner join ccp.CUST_CCP_INFO_200710 cc
on cc.cust_id=a.cust_id
group by a.cust_group_id,churn.pre_m_arpu_d
你 的 SQL 再 把 这 三 个 部 分 给 FULL OUTER JOIN 起 来 。 |
|