Oracle20080821--函数.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Oracle20080821--函数

Oracle分析函数over及开窗函数 作者: kezong,  出处:blog, 责任编辑: 王晓晨,  2008-07-30 07:10   Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是,对于每个组返回多行,而聚合函数对于每个组只返回一行。   分析函数over 及开窗函数   一:分析函数over   Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是   对于每个组返回多行,而聚合函数对于每个组只返回一行。   下面通过几个例子来说明其应用。   1:统计某商店的营业额。   date??? sale   1???????? ?20   2??????????15   3??????????14   4????????? 18   5????????? ?30   规则:按天统计:每天都统计前面几天的总额   得到的结果:   DATE?? SALE?? SUM   ----- -------- ------   1??????? 20 20??? ?--1天   2????????15 35???? --1天+2天   3?????? ?14 49???? --1天+2天+3天   4??????? 18??????????? 67 .   5????????30??????????? 97 .   2:统计各班成绩第一名的同学信息   NAME? ?CLASS??? S   ----- ----- ----------------------   fda??????? 1????????? 80   ffd?????????1????????? 78   dss??????? 1???????? ?95   cfe??????? ?2??????????74   gds??????? 2??????????92   gf???????? ? 3????????? 99   ddd????????3????????? 99   adf?????????3????????? 45   asdf???????3????????? 55   3dd????????3????????? 78 通过: --   select?*?from   (   select?name,class,s,rank()over(partition?by?class?order?by?s?desc)?mm?from?t2   )   where?mm=1 --   得到结果:   NAME? CLASS? S? MM   ----- ----- ---------------------- ----------------------   dss???? 1??????? 95?? 1   gds???? 2????????92?? 1   gf??????? 3????????99?? 1   ddd???? 3????????99???1   注意:   1.在求第一名成绩的时候,不能用row_number(),因为如果同班有两个并列第一,row_number()只返回一个结果   2.rank()和dense_rank()的区别是:   --rank()是跳跃排序,有两个第二名时接下来就是第四名   --dense_rank()l是连续排序,有两个第二名时仍然跟着第三名   3.分类统计 (并显示信息)   A?? B?? C   -- -- ----------------------   m? ?a??2   n?? a??3   m? a? ?2   n? ?b? ?2   n?? b?? 1   x? ?b?? 3   x?? b?? 2   x? ?b?? 4   h? ?b?? 3 select?a,c,sum(c)over(partition?by?a)?from?t2 得到结果:   A B C??? SUM(C)OVER(PARTITIONBYA)   -- -- ------- ------------------------   h b 3???? 3   m a 2??? 4   m a 2??? 4   n a 3???? 6   n b 2???? 6   n b 1??? ?6   x b 3?????9   x b 2???? 9   x b 4???? 9   如果用sum,group by 则只能得到   A SUM(C)   -- ----------------------   h?? 3   m??4   n?? 6   x?? 9   无法得到B列值   ==

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档