7-oracle_分析函数(一)

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值