`
T240178168
  • 浏览: 362207 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

谈GROUP BY 中的ROLLUP函数

阅读更多
rollup(a,b)的特点是,先安(a,b)一起汇总统计,然后再按照A进行汇总统计,最后是对所有的统计再统计。

ROLLUP中的参数可以多个,形式也多样,例如包含在()内的参数如果有多个,但是又想对某些进行列绑定按照一个列处理,

则可以嵌套()。下例中的第二就是如此:



例1:

select a.khh,b.jjrxm,a.cjrq, sum(a.cjje) total from tjgmxls a,tkhxx b    
      where b.jjrbh(+)=a.khh and cjrq<20070201
      group by rollup(khh,jjrxm,cjrq);



例2:

select a.khh,b.jjrxm,a.cjrq, sum(a.cjje) total from tjgmxls a,tkhxx b    
      where b.jjrbh(+)=a.khh and cjrq<20070201
      group by rollup((khh,jjrxm),cjrq);

例3:

   有表格数据如下,

   SQL> select * from test_Value;

      MONS JJR               CJL       CJJE
---------- ---------- ---------- ----------
    200801 LZF               100       1000
    200802 LZF               200       2000
    200803 LZF               300       1000
    200801 wth               300       1000
    200802 wth               100        500
    200803 wth              1000       4000
6 rows selected

  在其上做一些比较复杂的查询

   -------

  SQL> select decode(jjr,null,'汇总',jjr),
  2    sum(cjl) ttl_cjl, sum(cjje), avg(cjl), sum(cjl) / sum(cjje)
  3    from test_value
  4   group by rollup(jjr)
  5   order by ttl_cjl
  6  /

DECODE(JJR,NULL,'汇总',JJR)    TTL_CJL  SUM(CJJE)   AVG(CJL) SUM(CJL)/SUM(CJJE)
--------------------------- ---------- ---------- ---------- ------------------
LZF                                600       4000        200               0.15
wth                               1400       5500 466.666666  0.254545454545455
汇总                              2000       9500 333.333333  0.210526315789474

这是比较集成的查询使用到统计,rollup,decode,order等功能
分享到:
评论

相关推荐

    group by 后 使用 rollup 子句 总结.doc

    group by 后 带 rollup 子句的功能可以理解为:先按一定的规则产生多种分组,然后按各种分组统计数据(至于统计出的数据是求和还是最大值还是平均值等这就取决于SELECT后的聚合函数)。因此要搞懂group by 后 带 ...

    使用ROLLUP函数生成报表的小计、合计

    使用ROLLUP函数生成报表的小计、合计 这个函数很不错 使用的范围其实蛮广的

    Sequelize中用group by进行分组聚合查询

    GROUP BY子句要和聚合函数配合使用才能完成分组查询,在SELECT查询的字段中,如果没有使用聚合函数就必须出现在ORDER BY子句中。分组查询后,查询结果为一个或多个列分组后的结果集。 GROUP BY语法 SELECT 列名, ...

    group by分组函数之rollup与cube用法1

    用union all方式对上面代码改写如下:SQL&gt; select group_id,job,sum(salary) from group_test 2 g

    oracle中聚合函数的扩展使用(ROLLUP CUBE、GROUPING()函数与ROLLUP、CUBE的结合使用等)

    oracle 聚合函数的扩展使用 ...2.CUBE子句也是对GROUP BY子句进行扩展,返回CUBE中所有列组合的小计信息,同时在最后显示总计信息。 3.GROUPING()函数与ROLLUP、CUBE的结合使用 4.GROUPING_ID()函数的使用

    Sql学习第四天——SQL 关于with cube,with rollup和grouping解释及演示

    关于with cube ,with rollup 和 grouping 通过查看sql 2005的帮助文档找到了CUBE 和 ROLLUP 之间的具体区别: ...仅在与包含 CUBE 或 ROLLUP 运算符的 GROUP BY 子句相关联的选择列表中才允许分组。 当看到以上

    数据库MySQL基础知识点3

    day11: where条件之比较运算、逻辑运算 模糊查询(like) % 表示任意多个字符 ...  group by + with rollup:分组+小计 限制记录limit:限制取出记录的数量,要写在SQL语句的最后 标准的SQL书写格式

    详解MySQL中的分组查询与连接查询语句

    group by 属性名 [having 条件表达式][ with rollup] “属性名 ”指按照该字段值进行分组;“having 条件表达式 ”用来限制分组后的显示,满足条件的结果将被显示;with rollup 将会在所有记录的最后加上一条记录,...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    4.3.3 空值与GROUP BY和ORDER BY 112 4.3.4 空值与聚合函数 114 4.4 小结 114 第5章 关于问题 116 5.1 问出好的问题 116 5.2 提问的目的 117 5.3 问题的种类 117 5.4 关于问题的问题 119 5.5 关于数据的问题...

    Oracle_Database_11g完全参考手册.part3/3

    12.1 groupby和having的用法 12.1.1 添加一个orderby 12.1.2 执行顺序 12.2 分组视图 12.3 用别名重命名列 12.4 分组视图的功能 12.4.3 对列和分组函数进行排序 12.4.4 连接列 12.5 更多分组可能性 第13章 当一个...

    Oracle_Database_11g完全参考手册.part2/3

    12.1 groupby和having的用法 12.1.1 添加一个orderby 12.1.2 执行顺序 12.2 分组视图 12.3 用别名重命名列 12.4 分组视图的功能 12.4.3 对列和分组函数进行排序 12.4.4 连接列 12.5 更多分组可能性 第13章 当一个...

    精通SQL 结构化查询语言详解

    8.3.4 GROUP BY子句中的NULL值处理  8.3.5 HAVING子句  8.3.6 HAVING子句与WHERE子句  8.3.7 SELECT语句各查询子句总结  第9章 多表查询  9.1 本章用到的实例表  9.2 表的基本连接  9.2.1 连接表的...

    精通SQL--结构化查询语言详解

    8.3.4 group by子句中的null值处理 153 8.3.5 having子句 153 8.3.6 having子句与where子句 154 8.3.7 select语句各查询子句总结 156 第9章 多表查询 157 9.1 本章用到的实例表 157 9.2 表的基本连接 158 ...

    MySQL基础学习5

    文章目录聚合函数sum求和avg平均数max最大值min最小值year求年龄count查询数据个数group by分组with rollup数据总汇having分组筛选join多表查询inner join内连接[outter] join外连接left [outer] join左连接right ...

    Microsoft SQL Server 2008技术内幕:T-SQL查询(第二卷)

    1.3.3 步骤3:GROUP BY阶段 1.3.4 步骤4:HAVING阶段 1.3.5 步骤5:SELECT阶段 1.3.6 步骤6:排序用的ORDER BY阶段 1.4 逻辑查询处理的深入内容 1.4.1 表运算符 1.4.2 OVER子句 1.4.3 集合运算符 1.5 总结 ...

    精通Oracle.10g.PLSQL编程

    使用SQL语句 4.1 使用基本查询 4.1.1 简单查询语句 4.1.2 ...函数 4.4.2 GROUPBY和HAVING 4.4.3 ROLLUP和CUBE 4.4.4 GROUPINGSETS 4.5 连接查询 4.5.1 相等连接 4.5.2 不等...

    SQLServer2008技术内幕T-SQL查询包含源代码及附录A

    1.3.3 步骤3:GROUP BY阶段10 1.3.4 步骤4:HAVING阶段11 1.3.5 步骤5:SELECT阶段12 1.3.6 步骤6:排序用的ORDER BY阶段13 1.4 逻辑查询处理的深入内容16 1.4.1 表运算符16 1.4.2 OVER子句23 1.4.3 集合运算符25 ...

    Oracle事例

    20.oracle8中扩充了group by rollup和cube的操作。有时候省了你好多功夫的。 下面的语句可以进行总计 select region_code,count(*) from aicbs.acc_woff_notify group by rollup(region_code); &lt;2&gt; 对第1个字段...

    Microsoft+SQL+Server+2008技术内幕:T-SQL查询_源代码及附录 中文版

    1.3.3 步骤3:GROUP BY阶段10 1.3.4 步骤4:HAVING阶段11 1.3.5 步骤5:SELECT阶段12 1.3.6 步骤6:排序用的ORDER BY阶段13 1.4 逻辑查询处理的深入内容16 1.4.1 表运算符16 1.4.2 OVER子句23 1.4.3 集合...

Global site tag (gtag.js) - Google Analytics