oracle排序与分析函数.docxVIP

  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文档。上传文档
查看更多
oracle排序与分析函数

--已知:两种排名方式(分区和不分区):使用和不使用partition--两种计算方式(连续,不连续),对应函数:dense_rank,rank语法:rank() over (order by 排序字段 顺序)rank() over (partition by 分组字段 order by 排序字段 顺序) ?1.顺序:asc|desc 名次与业务相关: 示例:找求优秀学员:成绩:降序 迟到次数:升序2.分区字段:根据什么字段进行分区。?问题:分区与分组有什么区别?·分区只是将原始数据进行名次排列(记录数不变),·分组是对原始数据进行聚合统计(记录数变少,每组返回一条),注意:聚合。rank()与dense_rank():非连续排名与连续排名(都是简单排名)·查询原始数据:学号,姓名,科目名,成绩select * from t_score;S_IDS_NAMESUB_NAMESCORE1张三语文80.002李四数学80.001张三数学0.002李四语文50.003张三丰? 语文10.003张三丰? 数学 3张三丰? 体育120.004杨过JAVA90.005mikec++80.003张三丰? Oracle0.004杨过Oracle77.002李四Oracle77.00?·查询各学生科目为Oracle排名(简单排名)select sc.s_id,sc.s_name,sub_name,sc.score, rank() over (order by score desc) 名次 from t_score sc where sub_name=Oracle; S_IDS_NAMESUB_NAMESCORE名次4杨过 Oracle77.0012李四 Oracle77.0013张三丰 Oracle0.003?·对比:rank()与dense_rank():非连续排名与连续排名(都是简单排名) ?S_IDS_NAMESUB_NAMESCORE名次4杨过 Oracle77.0012李四 Oracle77.0013张三丰 Oracle0.002?·查询各学生各科排名(分区排名)select sc.s_id,sc.s_name,sub_name,sc.score, rank() over (partition by sub_name order by score desc) 名次 from t_score sc S_IDS_NAMESUB_NAMESCORE名次4杨过JAVA90.0014杨过Oracle77.0012李四Oracle77.0013张三丰? Oracle0.0035mikec++80.0013张三丰? 数学 12李四数学80.0021张三数学0.0033张三丰? 体育120.0011张三语文80.0012李四语文50.0023张三丰? 语文10.003?·查询各科前2名(分区排名)select * from ( select sc.s_id,sc.s_name,sub_name,sc.score, dense_rank() over (partition by sub_name order by score desc) 名次 from t_score sc ) x where x.名次=2;S_IDS_NAMESUB_NAMESCORE名次4杨过JAVA90.00 14杨过Oracle77.00 12李四Oracle77.00 13张三丰? Oracle0.00 22.oracle分析函数row_number() over()使用row_number() over ([partition by col1] order by col2) ) as 别名表示根据col1分组,在分组内部根据 col2排序而这个“别名”的值就表示每组内部排序后的顺序编号(组内连续的唯一的),[partition by col1] 可省略。 、select deptno,ename,sal, sum(sal) over (order by ename) 累计, --按姓名排序,并将薪水逐个累加 sum(sal) over () 总和 ,?????????????? -- 此处sum(sal) over () 等同于sum(sal),求薪水总和 100*round(sal/sum(sal) over (),4) 份额(%) --求每个人的薪水占总额的比例,小数点后保留2位,括号和百分号为特殊符号,所以需要“” from emp结果如下 :2、select deptno,ename,sal,sum(sal) over (partition by deptno order by ename) 部门连续求和,--partition by deptno先按部门分组,再

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档