star tree的oracle实现

两个层次的代码,后面的层次同理实现,基本上计算一个层次2分钟,后面因为数据剪枝条,可以更快。
我这里少写了一步是从tree中将剪出来的枝append到结果中


drop table t_tree_lv2;
create table t_tree_lv2 as
select tree_o,lv2,pv,convert,click,cnt,
CASE
WHEN (pv 1000
or convert > 2
or click > 10;

drop table t_tree_lv2_left;
create table t_tree_lv2_left
as
select a.* from t_tree_lv2 a join t_tree_lv2_merge b on (a.tree = b.tree);

drop table t_detail_lv2;
create table t_detail_lv2 as
select /*+ MAPJOIN(b) */
a.lv2,
a.lv3,
a.lv4,
a.lv5,
a.lv6,
a.lv7,
a.lv8,
a.lv9,
a.pv,
a.click,
a.convert,
b.tree
from t_detail_lv1 a
join t_tree_lv2_left b on (a.tree = b.tree_o and a.lv2 = b.lv2);


--lv2 lv3
--lv1 lv2
drop table t_tree_lv3;
create table t_tree_lv3 as
select tree_o,lv3,pv,convert,click,cnt,
CASE
WHEN (pv 1000
or convert > 2
or click > 10;

drop table t_tree_lv3_left;
create table t_tree_lv3_left
as
select a.* from t_tree_lv3 a join t_tree_lv3_merge b on (a.tree = b.tree);

drop table t_detail_lv3;
create table t_detail_lv3 as
select /*+ MAPJOIN(b) */
a.lv2,
a.lv3,
a.lv4,
a.lv5,
a.lv6,
a.lv7,
a.lv8,
a.lv9,
a.pv,
a.click,
a.convert,
b.tree
from t_detail_lv2 a
join t_tree_lv3_left b on (a.tree = b.tree_o and a.lv3 = b.lv3);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值