ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Oracle 开发之——分析函数分类汇总(1)

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

原创 Linux操作系统 作者:liakngkang 时间:2010-05-25 17:28:11 0 删除 编辑

 

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

Oracle从8.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博客 ” ,链接:https://blog.itpub.net/23089850/viewspace-663713/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2010-05-06

  • 博文量
    1
  • 访问量
    12057