Oracle 开发之——分析函数分类汇总(1)

 

作者:李康康         邮箱:liakngkang@126.com

Oracle8.1.6引入分析函数,可以更快速、更方便的实现业务需求比较复杂的sql。其中包括:

1.       有关行号的分析函数:rank()  dense_rank()  row_number()

2.       类似于聚合函数的分析函数sum()  avg()  max()  min()

3.       取某行某列数据的分析函数lag() lead()

4.       取首位行某列的分析函数first_Value()  last_value()

 

今天先看一下有关行号的分析函数

Rank():有重号且跳号

Dense_rank():有重号不跳号

Row_number():无重号不跳号

它们与rownum的区别是,rownum表示的是row source的序号,而以上分析函数返回的序号取决于over之后的分组排序信息,看以下例子便可一目了然:

源数据为:

SQL> select * from stu;

 

        ID NAME            CLASS

---------- ---------- ----------

         1 a                  10

         1 b                  10

         2 c                  10

         2 d                  10

         3 e                  10

         4 f                  20

         5 g                  20

         6 h                  20

         6 i                  20

 

9 rows selected.

以下sql可以很容易的看出几者的区别:

SQL> select id,name,class,

  2   rank() over(partition by class order by id) rank,

  3   dense_rank()  over(partition by class order by id) dense_rank,

  4   row_number()  over(partition by class order by id) row_number,

  5   rownum

  6   from stu;

 

        ID NAME            CLASS       RANK DENSE_RANK ROW_NUMBER     ROWNUM

---------- ---------- ---------- ---------- ---------- ---------- ----------

         1 a                  10          1          1          1          1

         1 b                  10          1          1          2          2

         2 c                  10          3          2          3          3

         2 d                  10          3          2          4          4

         3 e                  10          5          3          5          5

         4 f                  20          1          1          1          6

         5 g                  20          2          2          2          7

         6 h                  20          3          3          3          8

         6 i                  20          3          3          4          9

 

9 rows selected.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23089850/viewspace-663713/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23089850/viewspace-663713/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值