DB2函数——-ROW_NUMBER() OVER()函数用法

摘要:
partitionby用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组,它和聚合函数不同的地方在于它能够返回一个分组中的多条记录,而聚合函数一般只有一个反映统计值的记录。并且会给出一个排序的序号作为一个字段例如:employee,根据部门分组排序。SELECTempno,WORKDEPT,SALARY,Row_Number()OVERrankFROMemployee--------------------------------------000010A001527501000110A00665002000120A00492503200010A00465004200120A00392505000020B01942501000030C01982501000130C01738002对查询结果进行排序:(无分组)SELECTempno,WORKDEPT,SALARY,Row_Number()OVERrankFROMemployee--------------------------------------000010A001527501000030C01982502000070D21961703000020B01942504000090E11897505000100E21861506000050E01801757000130C01738008000060D11722509row_number()over()和rownum差不多,功能更强一点.2、rank()over()是跳跃排序,有两个第二名时接下来就是第四名.selectworkdept,salary,rank()overasdense_rank_orderfromemporderbyworkdept;------------------A00392501A00465002A00492503A00665004A001527505B01942501C01684201C01684201C017380033、dense_rank()over()是连续排序,有两个第二名时仍然跟着第三名。

1、row_number() over()排序功能:

(1) row_number() over()分组排序功能:

在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where group by order by 的执行。

partition by 用于给结果集分组,如果没有指定那么它把整个结果集作为一个分组,它和聚合函数不同的地方在于它能够返回一个分组中的多条记录,而聚合函数一般只有一个反映统计值的记录。并且会给出一个排序的序号作为一个字段

例如:employee,根据部门分组排序。

  1. SELECTempno,WORKDEPT,SALARY,Row_Number()OVER(partitionbyworkdeptORDERBYsalarydesc)rankFROMemployee
  2. --------------------------------------
  3. 000010A001527501
  4. 000110A00665002
  5. 000120A00492503
  6. 200010A00465004
  7. 200120A00392505
  8. 000020B01942501
  9. 000030C01982501
  10. 000130C01738002

(2)对查询结果进行排序:(无分组)

  1. SELECTempno,WORKDEPT,SALARY,Row_Number()OVER(ORDERBYsalarydesc)rankFROMemployee
  2. --------------------------------------
  3. 000010A001527501
  4. 000030C01982502
  5. 000070D21961703
  6. 000020B01942504
  7. 000090E11897505
  8. 000100E21861506
  9. 000050E01801757
  10. 000130C01738008
  11. 000060D11722509

row_number() over()和rownum差不多,功能更强一点(可以在各个分组内从1开时排序).

2、rank()over()是跳跃排序,有两个第二名时接下来就是第四名(同样是在各个分组内).

  1. selectworkdept,salary,rank()over(partitionbyworkdeptorderbysalary)asdense_rank_orderfromemporderbyworkdept;
  2. ------------------
  3. A00392501
  4. A00465002
  5. A00492503
  6. A00665004
  7. A001527505
  8. B01942501
  9. C01684201
  10. C01684201
  11. C01738003

3、dense_rank()over()是连续排序,有两个第二名时仍然跟着第三名。相比之下row_number是没有重复值的.

  1. selectworkdept,salary,dense_rank()over(partitionbyworkdeptorderbysalary)asdense_rank_orderfromemporderbyworkdept;
  2. ------------------
  3. A00392501
  4. A00465002
  5. A00492503
  6. A00665004
  7. A001527505
  8. B01942501
  9. C01684201
  10. C01684201
  11. C01738002
  12. C01982503

---@使用ROW_NUMBER删除重复数据
---假设表TAB中有a,b,c三列,可以使用下列语句删除a,b,c都相同的重复行。

  1. DELETEFROM(selectyear,QUARTER,RESULTS,row_number()over(partitionbyYEAR,QUARTER,RESULTSorderbyYEAR,QUARTER,RESULTS)ASROW_NOFROMSALE)
  2. WHEREROW_NO>1

免责声明:文章转载自《DB2函数——-ROW_NUMBER() OVER()函数用法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇流量取证-流量中提取文件从Chrome源码看浏览器如何构建DOM树下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

Pycharm Debug功能详解

左键单击代码编辑区域中的行号以在调试模式下运行代码:单击左上角工具栏上的调试图标(bug图)。方法2:在调试模式下运行后,1。代码编辑区域中的蓝色条是当前程序运行的位置,即c=add(a)应该运行,但尚未运行。2.代码编辑区域中的深红色条是当前程序设置的所有断点行。3.左下方是程序堆栈,进入fun()函数。4.右下方是可变显示区域1。跳转到当前断点(在断点之...

element 导航菜单 控制路由跳转

处理中心<我的平台<templateslot=“title”>选项1<el menu itemindex=“2-4-3”>选项3<消息中心<el menu itemindex=“4”>//www.ele.me“rel=”externalnofall...

java.net.URISyntaxException的解决办法

直接采用Stringurl=“http:count=1”;HttpGethttpget=新的HttpGet(url);HttpResponseresponse=client.execute(httpget);例如,“|”&因此,不能直接使用String而不是URI来访问。然后我们可以使用URL生成URI的方法来解决这个问题。代码如下:URLu...

等保2.0四级安全要求

平等保护2.0四级安全要求四级安全保护能力:应能够在统一的安全战略下,防止恶意攻击、严重自然灾害和来自国家一级、敌对组织和资源丰富的威胁源的其他严重危害造成的资源损害。它应该能够及时检测和监控攻击和安全事件,所有功能都可以快速恢复。以下粗体字段是平等保护的第4级和第3级之间的差异,应予以更多注意。...

差分方程的零输入响应与零状态响应

差分方程的迭代分析方法有以下缺点:没有闭合解,不利于数学分析。某个时间的输出只能从头开始计算。本文介绍了差分方程的零输入响应和零状态响应分析方法。对于系统,这种分析方法可以很好地表达系统响应的物理意义=Y[-1]=0$Input Y[n]。回顾零输入响应和零状态响应的迭代计算,我们发现以下规则:$egin{align*}y[0]&=-&qqu...

汇编指令MOV

格式:MOVDST,SRC例如:MOVEAX,#050aH;将十六进制050a传送到通用寄存器eax中MOVDI,BXMOVES,AXMOVAX,DSMOVAL,23HMOV[2000H],02HMOV[2061H],BX...