始创于2000年 股票代码:831685
咨询热线:0371-60135900 注册有礼 登录
  • 挂牌上市企业
  • 60秒人工响应
  • 99.99%连通率
  • 7*24h人工
  • 故障100倍补偿
您的位置: 网站首页 > 帮助中心>文章内容

Oracle tree计算叶子节点到根节点的乘积

发布时间:  2012/9/12 17:28:28

//有下面一棵二叉树,转换为表结构:   
parent_id  child_id  weight   
------     -------   ------   
a          b              2    
b          c              3   
c          d              4   
b          e              7   
c          f              2   
//计算叶子节点到根节点之间边的权值的乘积:   
leaf weight   
---- ------   
d        24   
e        14   
f        12   
//数据   
create table tree (parent_id varchar2(10),child_id varchar2(10),weight number(2));   
insert into tree values('a','b',2);   
insert into tree values('b','c',3);   
insert into tree values('c','d',4);   
insert into tree values('b','e',7);   
insert into tree values('c','f',2);   
//创建一个函数实现求字串乘积(动态SQL)   
create or replace function func_tree(str in varchar2)   
return number   
as  
  num number;   
begin   
     execute immediate 'select '||str||' from dual' into num;   
     return num;   
end func_tree;   
//sql代码:   
select child_id, func_tree(substr(sys_connect_by_path(weight, '*'), 2)) weight   
from tree t   
where connect_by_isleaf = 1   
start with not exists (select 1 from tree where t.parent_id=child_id)   
connect by prior child_id = parent_id   
order by child_id;   
//结果:   
CHILD_ID       WEIGHT   
---------- ----------   
d                  24   
e                  14   
f                  12 


 


本文出自:亿恩科技【www.enkj.com】

服务器租用/服务器托管中国五强!虚拟主机域名注册顶级提供商!15年品质保障!--亿恩科技[ENKJ.COM]

  • 您可能在找
  • 亿恩北京公司:
  • 经营性ICP/ISP证:京B2-20150015
  • 亿恩郑州公司:
  • 经营性ICP/ISP/IDC证:豫B1.B2-20060070
  • 亿恩南昌公司:
  • 经营性ICP/ISP证:赣B2-20080012
  • 服务器/云主机 24小时售后服务电话:0371-60135900
  • 虚拟主机/智能建站 24小时售后服务电话:0371-60135900
  • 专注服务器托管17年
    扫扫关注-微信公众号
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 亿恩科技 版权所有  地址:郑州市高新区翠竹街1号总部企业基地亿恩大厦  法律顾问:河南亚太人律师事务所郝建锋、杜慧月律师   京公网安备41019702002023号
      1
     
     
     
     

    0371-60135900
    7*24小时客服服务热线