• 分析函数之rollup、cube函数


    rollup()函数、cube()函数
    
    --通常与group by 子句一起使用,根据维度在分组后进行聚合操作
    --应用场景:为每个分组返回一个小计,同时为所有分组返回总计
    select ename,deptno,sum(sal) from emp group by rollup(deptno,ename);
    --rollup和cube独立考虑每一列再决定其必须计算小计,对rollup()而言,通过列表来确定分组,
    --而cube函数则对每种可能的列组合分组
    
    
    rollup()辅助函数:往往是为了过滤掉一部分统计数据,而达到美化统计结果的作用。
    
    --grouping():必须接受一列且只能接受一列做为其参数。参数列值为空返回1,参数列值非空返回0。(即如果参数的列的值在rollup中,则返回1;否则返回0)
    select ename,deptno,sum(sal),grouping(ename),grouping(deptno) from emp group by rollup(deptno,ename);
    
    --grouping_id():必须接受一列或多列做为其参数。返回值为按参数排列顺序,依次对各个参数使用grouping()函数,
    --并将结果值依次串成一串二进制数然后再转化为十进制所得到的值
    select ename,deptno,sum(sal),grouping_id(deptno,ename) from emp group by rollup(deptno,ename);
    例如:grouping(a) = 0 ; grouping(b) = 1;
    则:grouping_id(a,b) = (01)2 =0*2^1+1*2^0= 1;
    grouping_id(b,a) = (10)2 =1*2^1+0*2^0=2;
    
    --group_id()函数:调用时不需要且不能传入任何参数。返回值为某个特定的分组出现的重复次数(第一大点中的第3种情况中往往会产生重复的分组)。
    --重复次数从0开始,例如某个分组第一次出现则返回值为0,第二次出现时返回值为1,……,第n次出现返回值为n-1。可用来去重
    
    grouping sets()函数:指定感兴趣的分组,减少计算整个维度的消耗
    select deptno,ename,sum(sal)from emp group by grouping sets (deptno,ename);

     原文链接:https://lanjingling.github.io/2015/10/09/oracle-fenxihanshu-1/

  • 相关阅读:
    javascript的基本语法
    javascript的初步认识
    就诊管理(数据结构小学期)
    软件工程课程总结
    每日学习(个人作业2)
    每日学习(个人作业2)
    每日学习(个人作业2)
    每日学习(个人作业2)
    Java中后端Bigdecimal传值到前端精度丢失问题
    这学期的加分项
  • 原文地址:https://www.cnblogs.com/ls11736/p/9284234.html
Copyright © 2020-2023  润新知