ITPub博客

首页 > 数据库 > Oracle > 7-oracle_分析函数(一)

7-oracle_分析函数(一)

原创 Oracle 作者:blt32034 时间:2019-03-23 18:01:56 0 删除 编辑

1.分组聚合函数

聚合函数主要有求和:sum();最大数:max();最小数:min();平均值:avg();统计数:count()等,在应用此类函数的时候,要么是从全集合来看或者从分组来看的。分组就是我们之前所说的维度,比如在成绩表中,我们需要按科目求出总成绩,最低成绩,最高成绩,平均成绩,以及人数。

select a.subject,

       sum (a.score) all_score, -- 总成绩

       min (a.score) min_score, -- 最低成绩

       max (a.score) max_score, -- 最高成绩

       avg (a.score) avg_score, -- 平均成绩

       count ( 1 ) stu_cnt -- 人数

  from t_score a

  group by a.subject;


2.分组排序函数

row_number是用于分组排序的函数,在数据处理上常常会用到,实际工作中我们的TOP N;去重,这类场景中此函数很方便的实现我们的需求。


比如我们要按科目分类,对每个人的成绩从高到低排序:

select stu_no,

       subject,

       score,

       row_number() over ( partition by a.subject order by a.score desc ) rn -- 排序

  from t_score a;

在row_number函数中,partition by则是按什么维度分组,如果不写这个则是按全集来分组,order by则是按什么排序,desc则表示倒序(从高到低),asc表示升序,默认是升序,可以不写。


比如我们需要求每个科目的前2名学生成绩信息。

select stu_no, subject, score, rn

  from ( select stu_no,

               subject,

               score,

               row_number() over ( partition by a.subject order by a.score desc ) rn -- 排序

          from t_score a) t

  where t.rn <= 2 ;

更多技术文章请关注公众号:BLT328


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31535951/viewspace-2639173/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 6-oracle_表关联
请登录后发表评论 登录
全部评论
在快递和物流行业深耕多年,有丰富的行业经验和解决方案。

注册时间:2018-05-07

  • 博文量
    45
  • 访问量
    52211