oracle分析函数

来源:互联网 发布:经典网络词语大全 编辑:程序博客网 时间:2024/05/22 13:44

oracle共有26个分析函数

分析函数语法如下

function_name(<argument>,<argument1>,<argument2>) over (<Partition-Clause>,<Order-by-Clause>,<Windowing Clause>)


SQL> select sum(aac040)over() from test;

SUM(AAC040)OVER()
-----------------
            54810
            54810
            54810
            54810
            54810
            54810
            54810
            54810
            54810
            54810
            54810
            54810
            54810
            54810
            54810
            54810
            54810
            54810
            54810
            54810

该语句对每一个人显示所有职工的工资和。

SQL> select sum(aac040) from test;

SUM(AAC040)
-----------
      54810

而如果只有sum则只显示一个

SQL> select sum(aac040)over(partition by aab001) from test;

SUM(AAC040)OVER(PARTITIONBYAAB
------------------------------
                           832
                             0
                             0
                          1038
                          3240
                          3240
                          3240
                             0
                             0
                         49000
                         49000
                         49000
                         49000
                         49000
                         49000
                         49000
                         49000
                         49000
                         49000
                           700

20 rows selected 

使用partition函数可以对数据进行分区计算


SQL> select sum(aac040) over(partition by aab001 order by aac001) from duanjw;

SUM(AAC040)OVER(PARTITIONBYAAB
------------------------------
                           832
                             0
                             0
                          1038
                          1740
                          2440
                          3240
                             0
                             0
                          5000
                         10000
                         15000
                         20000
                         25000
                         29000
                         34000
                         39000
                         44000
                         49000
                           700

例如使用分析函数取前N个最大值的方法如下

select sal,dr from (select sal ,dense_rank()over(order by sal) dr from emp) where dr=n;
dense_rank

原创粉丝点击