ITPub博客

首页 > Linux操作系统 > Linux操作系统 > row_number() over (partition by....order by...)用法 分组排序

row_number() over (partition by....order by...)用法 分组排序

原创 Linux操作系统 作者:huojiao2006 时间:2012-12-25 15:00:32 0 删除 编辑

row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)

SQL> SELECT G.*, ROW_NUMBER() OVER(PARTITION BY a ,b ORDER BY c DESC) ROWN
2    from (select '1' a, '2' b, '1' c
3            from dual
4          union all
5          select '1', '2', '2'
6            from dual
7          union all
8          select '1', '3', '3'
9            from dual
10          union all
11          select '1', '3', '4'
12            from dual
13          union all
14          select '1', '4', '5' from dual
15          union all
16          select '1','3','5'from dual) G
17 ;

A B C       ROWN
- - - ----------
1 2 2          1
1 2 1          2
1 3 5          1
1 3 4          2
1 3 3          3
1 4 5          1

与rownum的区别在于:使用rownum进行排序的时候是先对结果集加入伪列rownum然后再进行排序,而此函数在包含排序从句后是先排序再计算行号码.

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

请登录后发表评论 登录
全部评论

注册时间:2009-05-19

  • 博文量
    28
  • 访问量
    57052