oracle分析函数

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值