首页 / ORACLE / oracle分析函数
oracle分析函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了oracle分析函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2912字,纯文字阅读大概需要5分钟。
内容图文

一、应用场景
学生成绩表:
create table s_score ( id number(16) primarykeynotnull, studentId number(16) notnull, subject varchar(32) notnull, test_time date default sysdate notnull, score number(16,2) ); comment ontable s_score is‘学生分数‘; comment oncolumn s_score.id is‘记录id‘; comment oncolumn s_score.studentId is‘学生id‘; comment oncolumn s_score.subject is‘科目‘; comment oncolumn s_score.test_time is‘考试日期‘; comment oncolumn s_score.score is‘得分‘; create sequence s_score_seq minvalue 1 maxvalue 9999999999999999999999999999 start with1 increment by1 cache 20;
数据如下:
insert into s_score(id,studentid,subject,test_time,score) values(s_score_seq.nextval,1,‘A‘,sysdate,90); insertinto s_score(id,studentid,subject,test_time,score) values(s_score_seq.nextval,2,‘A‘,sysdate,90); insertinto s_score(id,studentid,subject,test_time,score) values(s_score_seq.nextval,3,‘A‘,sysdate,90); insertinto s_score(id,studentid,subject,test_time,score) values(s_score_seq.nextval,4,‘A‘,sysdate,92); insertinto s_score(id,studentid,subject,test_time,score) values(s_score_seq.nextval,5,‘A‘,sysdate,87); insertinto s_score(id,studentid,subject,test_time,score) values(s_score_seq.nextval,6,‘A‘,sysdate,80); insertinto s_score(id,studentid,subject,test_time,score) values(s_score_seq.nextval,7,‘A‘,sysdate,89); insertinto s_score(id,studentid,subject,test_time,score) values(s_score_seq.nextval,1,‘B‘,sysdate,70); insertinto s_score(id,studentid,subject,test_time,score) values(s_score_seq.nextval,2,‘B‘,sysdate,50); insertinto s_score(id,studentid,subject,test_time,score) values(s_score_seq.nextval,3,‘B‘,sysdate,60); insertinto s_score(id,studentid,subject,test_time,score) values(s_score_seq.nextval,4,‘B‘,sysdate,90); insertinto s_score(id,studentid,subject,test_time,score) values(s_score_seq.nextval,5,‘B‘,sysdate,90); insertinto s_score(id,studentid,subject,test_time,score) values(s_score_seq.nextval,6,‘B‘,sysdate,40); insertinto s_score(id,studentid,subject,test_time,score) values(s_score_seq.nextval,7,‘B‘,sysdate,80);
二、排序函数rank() over(order by column) | dense_rank() over(order by column)
1.不分组
讲解:
排序有连续性:dense_rank() over(order by column),例如:1、2、2、3、3、3、4
排序无连续性:rank() over(order by column),例如:1、2、2、4、4、4、4、8
查询A学科下所有学生成绩排序,从高到低:注:order by默认按照升序排列,desc是降序即从高到低
dense_rank()over(order by column):
select dense_rank() over(orderby score desc) ranknum,s.studentid,s.score from s_score s where s.subject =‘A‘;
rank()over(order by column):
select s.subject,rank() over(orderby score desc) ranknum,s.studentid,s.score from s_score s where s.subject =‘A‘;
2.分组排序
应用:查询A/B学科的前3名
select * from ( select s.subject,dense_rank() over(partition by s.subject orderby s.score desc) ranknum,s.studentid,s.score from s_score s) where ranknum <=3;
三、ROW_NUMBER
select s.subject,row_number() over(partition by s.subject orderby s.score desc) ranknum,s.studentid,s.score from s_score s;
原文:http://www.cnblogs.com/brolanda/p/4520266.html
内容总结
以上是互联网集市为您收集整理的oracle分析函数全部内容,希望文章能够帮你解决oracle分析函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。