知识大全 深入探讨:oracle中row

Posted 函数

篇首语:或许是时间炖化了他们的异端,或许是岁月油炸了我的坚持。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 深入探讨:oracle中row相关的知识,希望对你有一定的参考价值。

row_number()over(partition by col order by col )表示根据col 分组 在分组内部根据col 排序 而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的) 与rownum的区别在于 使用rownum进行排序的时候是先对结果集加入伪劣rownum然后再进行排序 而此函数在包含排序从句后是先排序再计算行号码 row_number()和rownum差不多 功能更强一点(可以在各个分组内从 开始排序) rank()是跳跃排序 有两个第二名时接下来就是第四名(同样是在各个分组内) dense_rank()也是连续排序 有两个第二名时仍然跟着第三名 相比之下row_number是没有重复值的 oracle 分析函数 row_number() 返回一个整数值(>= ); 语法格式: row_number() over (order by col_ [ col_ ]) 作用:按照col_ [ col_ ]排序 返回排序后的结果集 此用法有点像rownum 为每一行返回一个不相同的值

  复制代码 代码如下:

  select rownum ename job         row_number() over (order by rownum) row_number    from emp;        ROWNUM ENAME      JOB       ROW_NUMBER                 SMITH      CLERK                           ALLEN      SALESMAN                        WARD       SALESMAN                        JONES      MANAGER                         MARTIN     SALESMAN                        BLAKE      MANAGER                         CLARK      MANAGER                         SCOTT      ANALYST                         KING       PRESIDENT                      TURNER     SALESMAN                      ADAMS      CLERK                         JAMES      CLERK                         FORD       ANALYST                       MILLER     CLERK              

如果没有partition by子句 结果集将是按照order by 指定的列进行排序

  复制代码 代码如下:

  with row_number_test as(         select a enty o b from dual union all         select one from dual union all         select thirteen from dual union all         select five from dual union all         select four from dual)    select a b            row_number() over (order by b)    from row_number_test    order by a; 

正如我们所期待的 row_number()返回按照b列排序的结果 然后再按照a进行排序 才得到下面的结果:

  复制代码 代码如下:

  A B          ROW_NUMBER()OVER(ORDERBYB)        one                                     four                                    five                                    thirteen                                enty o                           

row_number() over (partition by col_n[ col_m ] order by col_ [ col_ ]) 作用:先按照col_n[ col_m 进行分组 再在每个分组中按照col_ [ col_ ]进行排序(升序) 最后返回排好序后的结果集:

  复制代码 代码如下:

  with row_number_test as(         select a enty o b * c from dual union all         select one + from dual union all         select thirteen * from dual union all         select five + from dual union all         select four + from dual)    select a b            row_number() over (partition by c order by b) row_number    from row_number_test    order by a; 

这个例子中 我们先按照c列分组 分为 组( * 组 + 组) 再按照每个小组的b列进行排序(按字符串首字母的ascii码排) 最后按照a列排序 得到下面的结果集:

  复制代码 代码如下:

cha138/Article/program/Oracle/201405/30853

相关参考

知识大全 深入oracle特定信息排序的分析

  在Oracle查询中如果在没有排序但又想让某列中特定值的信息排到前面的时候使用oracle的decode(字段字段值数字)cha138/Article/program/Oracle/20

知识大全 oracle表之间的连接

  Join是一种试图将两个表结合在一起的谓词一次只能连接个表表连接也可以被称为表关联在后面的叙述中我们将会使用rowsource来代替表因为使用rowsource更严谨一些并且将参与连接的个rows

知识大全 深入探讨.NET中的钩子技术[4]

深入探讨.NET中的钩子技术[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在这个方法中我

知识大全 深入探讨.NET中的钩子技术

深入探讨.NET中的钩子技术  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一介绍 &

知识大全 深入了解Oracle数据字典

深入了解Oracle数据字典  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  首先Oracle的字

知识大全 深入探讨.NET中的钩子技术[1]

深入探讨.NET中的钩子技术[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一介绍  本文

知识大全 深入探讨.NET中的钩子技术[2]

深入探讨.NET中的钩子技术[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  三使用代码  

知识大全 深入探讨.NET中的钩子技术[3]

深入探讨.NET中的钩子技术[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb

知识大全 深入探讨.NET中的钩子技术[5]

深入探讨.NET中的钩子技术[5]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb

知识大全 有孔就入 SQL Injection的深入探讨

有孔就入SQLInjection的深入探讨  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  SQL