oracle over partition开窗函数

oracle over partition开窗函数Oracle 的开窗函数 rank,dense_rank,row_number1、开窗函数和分组函数的区别分组函数是指按照某列或者某些列分组后进行某种计算,比如计数,求和等聚合函数进行计算。开窗函数是指基于某列或某些列让数据有序,数据行数和原始数据数相同,依然能曾现个体数据的原貌

Oracle 的开窗函数 rank,dense_rank,row_number   1、开窗函数和分组函数的区别   分组函数是指按照某列或者某些列分组后进行某种计算,比如计数,求和等聚合函数进行计算。   开窗函数是指基于某列或某些列让数据有序,数据行数和原始数据数相同,依然能曾现个体数据的原貌。   事例数据   create table student_scores(   stu_id varchar2(10),–学号   stu_name varchar2(20),–姓名   course varchar2(5),–课程   score number(5,2),–分数   constraint pk_stuid_course primary key (stu_id,course)   );   insert into student_scores(stu_id,stu_name,course,score) values(‘10001′,’周杰伦’,’语文’,’85’);   insert into student_scores(stu_id,stu_name,course,score) values(‘10001′,’周杰伦’,’数学’,’96’);   insert into student_scores(stu_id,stu_name,course,score) values(‘10001′,’周杰伦’,’英语’,’67’);   insert into student_scores(stu_id,stu_name,course,score) values(‘10002′,’谢霆锋’,’语文’,’71’);   insert into student_scores(stu_id,stu_name,course,score) values(‘10002′,’谢霆锋’,’数学’,’97’);   insert into student_scores(stu_id,stu_name,course,score) values(‘10002′,’谢霆锋’,’英语’,’100′);   insert into student_scores(stu_id,stu_name,course,score) values(‘10003′,’苏有朋’,’语文’,’79’);   insert into student_scores(stu_id,stu_name,course,score) values(‘10003′,’苏有朋’,’数学’,’65’);   insert into student_scores(stu_id,stu_name,course,score) values(‘10003′,’苏有朋’,’英语’,’80’);   insert into student_scores(stu_id,stu_name,course,score) values(‘10004′,’刘德华’,’语文’,’41’);   insert into student_scores(stu_id,stu_name,course,score) values(‘10004′,’刘德华’,’数学’,’61’);   insert into student_scores(stu_id,stu_name,course,score) values(‘10004′,’刘德华’,’英语’,’62’);   insert into student_scores(stu_id,stu_name,course,score) values(‘10005′,’小龙女’,’语文’,’94’);   insert into student_scores(stu_id,stu_name,course,score) values(‘10005′,’小龙女’,’数学’,’95’);   insert into student_scores(stu_id,stu_name,course,score) values(‘10005′,’小龙女’,’英语’,’96’);   2、分组函数:group by    按照课程进行分组,可以进行如下计算   select course,count(*) cou,avg(score) avgs,max(score) maxs,min(score) mins   from student_scores   group by course;        COURSE   COU   AVGS   MAXS   MINS   1   数学   5   82.8   97   61   2   语文   5   74   94   41   3   英语   5   81   100   62       3、开窗函数:rank() ,dense_rank(),row_number()   每个学科按照分数倒序排名 select stu_id,stu_name,course,score,rank() over(partition by course order by score desc) rankfrom student_scores;            STU_ID   STU_NAME   COURSE   SCORE   RANK   1   10002   谢霆锋   数学   97.00   1   2   10001   周杰伦   数学   96.00   2   3   10005   小龙女   数学   95.00   3   4   10003   苏有朋   数学   65.00   4   5   10004   刘德华   数学   61.00   5   6   10002   谢霆锋   英语   100.00   1   7   10005   小龙女   英语   96.00   2   8   10003   苏有朋   英语   80.00   3   9   10001   周杰伦   英语   67.00   4   10   10004   刘德华   英语   62.00   5   11   10005   小龙女   语文   94.00   1   12   10001   周杰伦   语文   85.00   2   13   10003   苏有朋   语文   79.00   3   14   10002   谢霆锋   语文   71.00   4   15   10004   刘德华   语文   41.00   5    注意分组函数和开窗函数针对数据在维度上的变化,分组函数使个体数据小时。开窗函数保留个体。

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/81853.html

(0)
上一篇 2024年 7月 29日 上午10:10
下一篇 2024年 7月 29日 上午10:14

相关推荐

关注微信