代码之家  ›  专栏  ›  技术社区  ›  FrustratedWithFormsDesigner

Oracle-集团级摘要

  •  0
  • FrustratedWithFormsDesigner  · 技术社区  · 16 年前

    ID           NAME              COUNT           TOTAL     TYPE
    -------------------------------------------------------------
    1            Test 1            10                         A
    2            Test 2            8                          A
                                                   18
    
    7            Mr. Test          9                          B
    12           XYZ               4                          B
                                                   13
    
    25           ABC               3                          C
    26           DEF               5                          C
    19           GHIJK             1                          C
                                                   9
    

    我有一个查询,它可以完成除总列之外的所有操作:

           select sd.id DATA_REF_NUM ID, count(sd.DATA_DEF_ID) COUNT, defs.data_name NAME, sd.type
           from some_data sd, data_defs defs
           where sd.data_def_id = defs.data_def_id
           group by some_data.type, some_data.id, defs.data_nam
           order by some_data.id asc, count(amv.MSG_ID) desc ;
    

    更新:

    分组是按类型划分的。在原来的帖子里忘了。

    3 回复  |  直到 16 年前
        1
  •  3
  •   Craig    16 年前

    使用像…这样的汇总怎么样。。。

    select sd.id DATA_REF_NUM ID, count(sd.DATA_DEF_ID) COUNT, defs.data_name NAME, sd.type from some_data sd, data_defs defs where sd.data_def_id = defs.data_def_id group by ROLLUP(some_data.type, (some_data.id, defs.data_nam)) order by some_data.id asc, count(amv.MSG_ID) desc ;

    这适用于我数据库中的一个类似示例,但我只在两列上进行了此操作,不确定在更多列上它将如何运行。。。

    克雷格。。。

        2
  •  1
  •   DCookie    16 年前

    假设SQL*Plus,您可以执行以下操作:

    col d1 noprint
    col d2 noprint
    WITH q AS
    (SELECT sd.id, count(sd.DATA_DEF_ID) COUNT, defs.data_name NAME, sd.type
       FROM some_data sd JOIN data_defs defs ON (sd.data_def_id = defs.data_def_id)
      GROUP BY some_data.type, some_data.id, defs.data_nam)
    SELECT 1 d1, type d2, id, count, name FROM q
    UNION ALL
    SELECT 2, type, null, null, null, SUM(count) FROM q GROUP BY 2, type
     ORDER BY 2,1,3;
    

    我无法在PL/SQL Developer 8中实现这一点,只有SQL*Plus。甚至命令窗口也不能工作。。。

        3
  •  0
  •   Matthew Flynn    16 年前

    select sd.id DATA_REF_NUM ID, count(sd.DATA_DEF_ID) COUNT, tot.TOTAL_FOR_TYPE, defs.data_name NAME, sd.type
       from some_data sd, data_defs defs, 
          (select count(sd2.DATA_DEF_ID) TOTAL_FOR_TYPE 
           from some_data sd2
           where sd2.type = sd.type) tot
       where sd.data_def_id = defs.data_def_id
       group by some_data.type, some_data.id, defs.data_nam
       order by some_data.id asc, count(amv.MSG_ID) desc ;