• 高级聚合函数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的统计
      
  • 相关阅读:
    SQL SERVER 导出到Oracle 问题与技巧
    oracle Array类型作为参数传入函数(存储过程) 大字符串参数解决方案
    Oracle 时间处理(加减)
    批处理(命令行)安装数据库
    导致Asp.Net站点重启的10个原因 ,记录重启原因
    关于vs2010 起始页
    SQL Server 导数据 Oracle
    MYSQL正确删除binlog的方法
    yum 安装supervisor
    redis集群配置与管理
  • 原文地址:https://www.cnblogs.com/yunman/p/5497808.html
Copyright © 2020-2023  润新知