表一
ID       父ID
1 0
11 1
112 11
113 11
2 0
3 0
31 3
32 3
311 31
312 31
3111 311
3112 311
3121 312表二
ID       点击量
11 1234
112 5678
113 0
31 500
32 300
311 123
3111 1100
3112 1011
3121 10结果,统计顶级ID的点击量,如下
1    6912
2    0
3    3044
我试了半天一条语句怎么也搞不定。

解决方案 »

  1.   

    select t1.父ID,sum(点击量)
    from 表一 t1,表二 t2
    where t1.ID =t2.ID(+)
    group by t1.父ID
      

  2.   

    select substr(t.id,1,1) id,sum(点击量) from 表二 t group by substr(t.id,1,1);
      

  3.   


    CREATE TABLE HR.B1
    (
      ID   NUMBER,
      FID  NUMBER
    )CREATE TABLE HR.B2
    (
      ID   NUMBER,
      DJL  NUMBER
    )select fid, sum(djl) from 
    (
    select b2.djl, c.id, f.id, nvl(f2.id, f.id),nvl(f3.id, nvl(f2.id, f.id)) fid
    from b2, b1 c, b1 f, b1 f2,b1 f3
    where b2.id = c.id
    and C.FID = f.id
    and f.fid = f2.id(+)
    and f2.fid = f3.id(+)
    )
    group by fid
      

  4.   


    select
    (SELECT a.id FROM 表一 a
    where a.父ID = 0
    START WITH a.ID   = b.ID  
    CONNECT BY PRIOR a.父ID = a.ID) as root,
     sum(b.点击量)
    from 表二 b 
    group by root;  
      

  5.   

    select connect_by_root 表1.id id,
      sum(表2.点击量) 点击量 from 表1,表2
    where 表1.id=表2.id(+)
    start with 表1.父id='0'
    connect by prior 表1.id=表1.父id
    group by connect_by_root 表1.id
      

  6.   

    connect_by_root 确实是个好方法
      

  7.   

    试了没有一个正确的。connect_by_root(t1.id), 这个方法是不错, 但是它不能用在group里好像, 我正在查呢报错:not a group by expression;不想再套一层循环了。