ITPub博客

首页 > 数据库 > Oracle > rank() over,dense_rank(),row_number() 的区别

rank() over,dense_rank(),row_number() 的区别

Oracle 作者:ghups 时间:2014-02-20 14:41:00 0 删除 编辑

        Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行。开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化。

rank() over,dense_rank(),row_number() 的区别 

  • rank() over课程编号为4的课程成绩相同的人排名相同,排名不连续 1 2 2 4

    select cno, rank() over(partition by cno order by grade desc)

      from t_score

     where instr('2,4', cno) > 0

  • dense_rank() over课程编号为4的课程成绩相同的人排名相同,排名不连续 1 2 2 3

    select cno 课程编号, dense_rank() over(partition by cno order by grade desc) 排名

         from t_score

      where instr('2,4', cno) > 0

  • row_number() over课程编号为4的课程成绩相同的人排名相同不同,排名连续1 2 3 4

    select cno 课程编号, row_number() over(partition by cno order by grade desc) 排名

      from t_score

     where instr('2,4', cno) > 0

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

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

注册时间:2009-07-16