1
oracle sql 语句统计分组统计多个同级节点下各自的子节点的个数

解决方案 »

  1.   

    with tree as
    (SELECT level-1 as 层级,id,name,parent_id,count(1)over(partition by parent_id) as 子节点数 FROM test start with id=根节点值 connect by prior id=parent_id)
    select distinct parent_id,子节点数 from tree where 层级=2
      

  2.   

    create table CRM_SERVICE_TYPE
    (
      SERVICE_TYPE_ID   VARCHAR2(60) not null,
      CREATE_TIME       DATE,
      SERVICE_TYPE_NAME VARCHAR2(40),
      PARENT_TYPE_ID    VARCHAR2(60)
    )
    insert into CRM_SERVICE_TYPE (SERVICE_TYPE_ID, CREATE_TIME, SERVICE_TYPE_NAME, PARENT_TYPE_ID)
    values ('servicef3e5c5a661d842d48a6d53cce9cfd30e', to_date('22-04-2012 16:03:40', 'dd-mm-yyyy hh24:mi:ss'), '咨询', 'servicea0d457a240b44afda9b61baeb5722404');
    insert into CRM_SERVICE_TYPE (SERVICE_TYPE_ID, CREATE_TIME, SERVICE_TYPE_NAME, PARENT_TYPE_ID)
    values ('servicea8987ec289a84033be327daaa92d618d', to_date('01-04-2012 16:03:40', 'dd-mm-yyyy hh24:mi:ss'), '政策', 'servicef3e5c5a661d842d48a6d53cce9cfd30e');
    insert into CRM_SERVICE_TYPE (SERVICE_TYPE_ID, CREATE_TIME, SERVICE_TYPE_NAME, PARENT_TYPE_ID)
    values ('serviceaac0f0e75c3a47e5998f4245f04043e9', to_date('08-04-2012 16:03:40', 'dd-mm-yyyy hh24:mi:ss'), '保费', 'servicef3e5c5a661d842d48a6d53cce9cfd30e');
    insert into CRM_SERVICE_TYPE (SERVICE_TYPE_ID, CREATE_TIME, SERVICE_TYPE_NAME, PARENT_TYPE_ID)
    values ('service08c74962dcb54c3397ce4bac02e85178', to_date('08-05-2012 16:03:40', 'dd-mm-yyyy hh24:mi:ss'), '车船税', 'servicef3e5c5a661d842d48a6d53cce9cfd30e');
    insert into CRM_SERVICE_TYPE (SERVICE_TYPE_ID, CREATE_TIME, SERVICE_TYPE_NAME, PARENT_TYPE_ID)
    values ('service1cf8ad6f71534f9b85b0c83a9cf0dd43', to_date('08-10-2012 16:03:40', 'dd-mm-yyyy hh24:mi:ss'), '车险', 'servicef3e5c5a661d842d48a6d53cce9cfd30e');
    insert into CRM_SERVICE_TYPE (SERVICE_TYPE_ID, CREATE_TIME, SERVICE_TYPE_NAME, PARENT_TYPE_ID)
    values ('serviceabbc0755087f4a9996962f6c70d330b1', to_date('01-01-2012 16:03:40', 'dd-mm-yyyy hh24:mi:ss'), '直销', 'servicea8987ec289a84033be327daaa92d618d');
    insert into CRM_SERVICE_TYPE (SERVICE_TYPE_ID, CREATE_TIME, SERVICE_TYPE_NAME, PARENT_TYPE_ID)
    values ('service844c89370e3c4f759bda32f429ed869e', to_date('10-01-2012 16:03:40', 'dd-mm-yyyy hh24:mi:ss'), '投保', 'serviceaac0f0e75c3a47e5998f4245f04043e9');
    insert into CRM_SERVICE_TYPE (SERVICE_TYPE_ID, CREATE_TIME, SERVICE_TYPE_NAME, PARENT_TYPE_ID)
    values ('service103b9d0318d7486cbf6cfef8513aa4cf', to_date('10-11-2012 16:03:40', 'dd-mm-yyyy hh24:mi:ss'), '二次投保', 'service844c89370e3c4f759bda32f429ed869e');
    可以统计多层不?