Oracle函数-分析函数1

Oracle函数-分析函数1

ID:43325304

大小:402.12 KB

页数:12页

时间:2019-09-30

Oracle函数-分析函数1_第1页
Oracle函数-分析函数1_第2页
Oracle函数-分析函数1_第3页
Oracle函数-分析函数1_第4页
Oracle函数-分析函数1_第5页
资源描述:

《Oracle函数-分析函数1》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、OVER(PARTITIONBY)函数用法2010年10月26日OVER(PARTITIONBY)函数介绍开窗函数Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行。开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化,举例如下:1:over后的写法:over(orderbysalary)按照salary排序进行累计,orderby是个默认的开窗函数over(partition

2、bydeptno)按照部门分区over(partitionbydeptnoorderbysalary)2:开窗的窗口范围:over(orderbysalaryrangebetween5precedingand5following):窗口范围为当前行数据幅度减5加5后的范围内的。举例:—sum(s)over(orderbysrangebetween2precedingand2following)表示力口2或2的范围内的求和selectname,classes,sum(s)over(orderbysrangebe

3、tween2precedingand2following)mmfromt2adf34545-45加2减2即43到47,但是s在这个范围内只有45asdf35555cfe274743dd378158-78在76到80范围内有78,80,求和得158fda180158gds29292ffd195190190198198following)口范围为当前行前后各移动5行。dss195ddd399gf399over(orderbysalaryrowsbetween5precedingand5举例:一sum(s)over

4、(orderbysrowsbetween2precedingand2following)表示在上下两彳〒之间的范围内selectname,class’s,sum(s)over(orderbysrowsbetween2precedingand2following)mmfromt2fda80gdsffd929546sidsdfddg959999adf345174asdf355252cfe2743323dd378379(45+55+74=174)(45+55+74+78=252)(74+55+45+78+80=33

5、2)(78+74+55+80+92=379)over(orderbysalaryrangebetweenunboundedprecedingandunboundedfollowing)或者over(orderbysalaryrowsbetweenunboundedprecedingandunboundedfollowing):窗口不做限制3、与over函数结合的几个函数介绍row_number()over()^rank()over()和dense_rank()over()函数的使用下面以班级成绩表t2来说明其

6、应用t2表信息如下:cfe274dss195ffd195fda180gds292gf399ddd399adf345asdf3553dd378select*fromselectname,class,s,rank()over(partitionbyclassorderbysdesc)mmfromt2)wheremm=1;得到的结果是:dss1951ffd1951gds2921gf3991ddd3991注意:1.在求第一名成绩的时候,不能用row_number(),因为如果同班有两个并列第一,row_number(

7、)只返回一个结果;select*from(selectname,class,s,row_number()over(partitionbyclassorderbysdesc)mmfromt2)wheremm=1;1951--95有两名但是只显示一个29213991--99有两名但也只显乔个2.rank()和dense_rank()可以将所有的都查找出来:如上可以看到采用rank可以将并列第一名的都查找出来;rank()和dense_rank()[x另!]:—rank()是跳跃排序,有两个第二名时接下来就是第四名

8、;selectname,class,s,rank()over(partitionbyclassorderbysdesc)mmfromt2dss1951ffd1951fda1803一直接就跳到了第二gds2921cfe2742gf3991ddd39913dd3783asdf3554adf3455mmfromt2—dense_rank()l是连续排序,有两个第二名时仍然跟着第三名鬻ctname,clas

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。