zoukankan      html  css  js  c++  java
  • 高级聚合函数rollup(),cube(),grouping sets()

       rollup(),cube(),grouping sets()
      上面这几个函数,是对group by分组功能做的功能扩展。
    a.rollup()
      功能:在原结果基础上追加一行总合计记录
      rollup(字段1,字段2)会追加按字段1进行的合计记录,
      最后再追加一个总合计记录
     
      select deptno,count(*)
      from emp
      group by rollup(deptno);
     
      select deptno,job,count(*)
      from emp
      group by rollup(deptno,job)
      order by deptno;
      ----等价于下面写法-----
      select deptno,job,count(*)
      from emp
      group by deptno,job
      union
      select deptno,null,count(*)
      from emp
      group by deptno
      union
      select null,null,count(*)
      from emp
      order by deptno;
     
      结论:group by rollup(字段1,字段2,字段3)
        --查询按字段1,字段2,字段3分组统计结果
        --追加按字段1和字段2的合计
        --追加按字段1的合计
        --追加总合计记录
    b.cube()
     
      select deptno,count(*)
      from emp
      group by cube(deptno)
      order by deptno;
     
      cube(字段1):作用于rollup(字段1)相同。
       追加一行总合计记录。
     
      select deptno,job,count(*)
      from emp
      group by cube(deptno,job)
      order by deptno;
      --查询group by deptno,job分组统计结果
      --查询group by deptno分组统计结果
      --查询group by job分组统计结果
      --查询没有group by统计结果
     
     结论:group by cube(字段1,字段2,字段3)
      --查询group by 字段1,字段2,字段3统计结果
      --查询group by 字段1,字段2统计结果
      --查询group by 字段1统计结果
      --查询group by 字段2统计结果
      --查询group by 字段3统计结果
      --查询group by 字段2,字段3统计结果
      --查询group by 字段1,字段3统计结果
      --查询没有group by统计结果
     
    c.grouping sets()
     
      select deptno,count(*)
      from emp
      group by grouping sets(deptno)
      order by deptno;
      --上面和没加grouping sets()效果一样
     
      select deptno,job,count(*)
      from emp
      group by grouping sets(deptno,job)
      order by deptno;
     --只返回cube规则追加的分组统计结果
     --不包含没有group by和group by deptno,job的统计
      
  • 相关阅读:
    LINQ使用的一点心得 子曰
    Extjs的grid的单元格中加载超链接和按钮 子曰
    关于建立“高保真模型”的必要性 子曰
    DHL:jQuery框架学习使用总结,插件,继续中...
    dhl:mvc用户登陆身份验证
    thickbox.js 及 将thickbox "close or esc key "改为 中文"关闭"
    在 jQuery 中如何判断对象是否存在
    jquery弹出层实例
    dhl:jquery select下拉框,checkbox,选择
    asp.net mvc 中"未找到路径“/favicon.ico”的控制器或该控制器未实现 IController。"
  • 原文地址:https://www.cnblogs.com/yunman/p/5497808.html
Copyright © 2011-2022 走看看