• OVER 分析函数


    over不能单独使用,要和分析函数:rank(),dense_rank(),row_number(),ntile ,sum(),avg()等一起使用。

    rank,dense_rank,row_number和 ntile之间的区别

    1      1      1       1
    2 2 2 1
    2 2 3 2
    4 3 4 2
    5 4 5 3

       四个分析函数都是按照col1分组内从1开始排序
        row_number() 是没有重复值的排序(即使两天记录相等也是不重复的),可以利用它来实现分页
        dense_rank() 是连续排序,两个第二名仍然跟着第三名
        rank()       是跳跃拍学,两个第二名下来就是第四名
      
    ntile (N)中的N,把记录强制分成多少段,事例中用的是ntile(3),记录现在分成3段了。
    用法:
    rank() over([partition by col1] order by col2) 
         dense_rank() over([partition by col1] order by col2) 
         row_number() over([partition by col1] order by col2)
         ntile(n) over([partition by col1] order by col2)       
        其中partition by col1]可省略 order by不可省略
        以上 四个为 分组排序  按照 partition by 的对象col1来分组  再按照  order by 的对象col2来排序
         sum(col1)  over()  按col1 汇总
         sum(col1)  over( order by  col2)  连续求和      按col2 排序 连续求col1的和   (不支持 sql2005 和 2008 ,sql2012 和oracle 支持)
         sum(col1)  over( partition by col2 order by  col3)   分组连续求和     按col2 分组后,按col3 排序 连续求col1的和   (不支持 sql2005 和 2008 ,sql2012 和oracle 支持)
         sum(col1)  over(partition by col2)  分组求和     按col2 分组 求每组col1的和     
         avg (col1)  over()  col1 平均数
         avg (col1)  over(partition by col2)  分组平均       按col2 分组 求col1平均数  
        
        
       
        
     
    SQL> select deptno,ename,sal,
    2 sum(sal) over (order by ename) 连续求和,
    3 sum(sal) over () 总和,                  -- 此处sum(sal) over () 等同于sum(sal)
    4 100*round(sal/sum(sal) over (),4) "份额(%)"
    5 from emp
    6 /

        DEPTNO ENAME             SAL   连续求和       总和    份额(%)
    ---------- ---------- ---------- ---------- ---------- ----------
            20 ADAMS            1100       1100      29025       3.79
            30 ALLEN            1600       2700      29025       5.51
            30 BLAKE            2850       5550      29025       9.82



  • 相关阅读:
    面试精选:链表问题集锦
    经典排序算法总结与实现 ---python
    Python高级编程–正则表达式(习题)
    Python面试题汇总
    Python正则表达式
    Linux下的Libsvm使用历程录
    在 linux(ubuntu) 下 安装 LibSVM
    过拟合
    百度历年笔试面试150题
    MATLAB 的数据类型
  • 原文地址:https://www.cnblogs.com/lishuangjiang/p/3460822.html
Copyright © 2020-2023  润新知