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