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的统计
      
  • 相关阅读:
    第十次作业
    第十次作业--找回感觉的练习
    MySQL 执行查询报错:Fatal error encountered during command execution
    ASP.NET MVC 4 创建、编辑Model时的数据绑定
    如何解决System.Web.HttpRequestValidationException的异常
    C# winform 跨线程更改窗体控件的属性
    使用NPOI读取Excel报错ICSharpCode.SharpZipLib.Zip.ZipException:Wrong Local header signature
    委托和事件简单样例
    SQLServer 2008 R2 对同时含有数字和中文的字段进行排序
    winform中选择文件获取路径
  • 原文地址:https://www.cnblogs.com/yunman/p/5497808.html
Copyright © 2011-2022 走看看