码迷,mamicode.com
首页 > 编程语言 > 详细

排序函数

时间:2015-09-11 17:25:59      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:

1.ROW_NUMBER

  ROW_NUMBER() OVER( PARTITION BY col1 ORDER BY col2)

  表示根据col1分组,在分组内部根据col2排序

  此函数计算的值就表示每组内部排序后的顺序编号,组内连续且唯一

  ROWNUM是伪列,ROW_NUMBER功能更强,可以直接从结果集中取出子集

  场景:按照部门编码分组显示,每组内按职员编码排序,并赋予组内编码

    SELECT deptno,ename,empno,

      ROW_NUMBER() OVER(PARTITION BY deptno ORDER BY empno) AS emp_id

    FROM emp;

2.RANK

  RANK() OVER(PARTITION BY col1 ORDER BY col2)

  表示根据col1分组,在分组内部根据col2给予等级标识

  等级标识即排名,相同的数据返回相同的排名

  跳跃排序,如果有相同数据,则排名相同,比如并列第二,则两行数据都标记为2,但下一位将是第四名

  和ROW_NUMBER的区别是有重复值,而ROW_NUMBER没有

  场景:按照部门编码分组,同组内按薪水倒序排序,相同薪水则按奖金数正序排列,并给予组内等级,用Rank_ID表示

    SELECT deptno,ename,sal,comm,

      RANK() OVER (PARTITION BY deptno ORDER BY sal DESC,comm) "Rank_ID"

    FROM emp;

3.DENSE_RANK

  DENSE_RANK OVER( PARTITION BY col1 ORDER BY col2)

  表示根据 col1分组,在分组内部根据col2给予等级标识

  即排名,相同的数据返回相同排名

  连续排序,如果有并列第二,下一个排序将是三,这一点是和RANK的不同,RANK是跳跃排序

排序函数

标签:

原文地址:http://www.cnblogs.com/Crow00/p/4801404.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!