Oracle学习系类篇(四)

 .分析函数

  分析函数oracle专门用于解决复杂报表统计需求的功能强大的函数,它可以在数据中进行分组,然后计算基于组的邹忠统计值,并且每一组的每一行都可以返回一个统计值。

  分析函数和聚合函数的不同之处是什么?

  普通的聚合函数用group by分组。每个分组返回一个统计值。而分析函数采用partition by 分组,每个分组没行都可以返回一个统计值。

  分析函数的形式:

  分析函数带有一个开窗函数over(),包含三个分析子句:分组(partirion by),排序(order by),窗口(rows)。

sum(sal) over (partition by deptno order by ename) 按部门“连续”求总和
sum(sal) over (partition by deptno) 按部门求总和
sum(sal) over (order by deptno,ename) 不按部门“连续”求总和
sum(sal) over () 不按部门,求所有员工总和,效果等同于sum(sal)。

    统计某商店的营业额。        

         规则:按天统计:每天都统计前面几天的总额
       
        
      排序开窗函数 

      排序函数(列)over(选项),这里的选项可以是order by子句,也可以是over(partition by 子句 order by 子句),但是不可以是partition by子句

        1.row_number() over()

          

          

          2.rank() rank计算一组值的排名,返回数字类型。排名可能是不连续。如果有5人,其中有2个人排名第一,则rank返回的排名结果为:1 1 3 4 5。

      

         3.dense_rank计算一组值的排名,该排名是连续整数从1开始。如果有5人,其中有2个人排名第一,则rank返回的排名结果为:1 1 2 3 4。

        

         聚合开窗函数

        

      

      

原文地址:https://www.cnblogs.com/WangJunZzz/p/7258761.html