oracle怎样使用分组查询,Oracle之分组查询

分组查询

分组,将 事物 按某方面 相同性质 进行归类。即在同组事物中,某方面性质是一致的;不同组之间,在指定性质上是不同的。按某指定性质分组后,一个包含有任意个对象的组会以该特性作为标识,整体作为一条记录呈现。

Oracle中,分组方式有两种。一种是Group by 方式;另一种是Having 方式。

Group by

进行分组统计,使用聚合函数,可以统计组内某些性质的累加(SUM)、平均值(AVG)、最大值(MAX)、最小值(MIN)等等

AVG 返回指定组中的平均值,空值被忽略。

例:select prd_no,avg(qty) from sales group by prd_no

COUNT 返回指定组中项目的数量。

例:select count(prd_no) from sales

MAX 返回指定数据的最大值。

例:select prd_no,max(qty) from sales group by prd_no

MIN 返回指定数据的最小值。

例:select prd_no,min(qty) from sales group by prd_no

SUM 返回指定数据的和,只能用于数字列,空值被忽略。

例:select prd_no,sum(qty) from sales group by prd_no

说明:

第1、3、4、5项,根据prd_no进行分组,返回两列数据,prd_no及其对应的统计值。

第2项,统计sales表中 “prd_no=指定值” 的记录数。

Having

where子句只能对没有分组统计前的数据行进行筛选,对分组后的条件的筛选必须使用having子句

例:

selectstudentID as 学员编号,courseID as 内部测试,avg(score) as 内部测试平均成绩

fromscore

groupby studentID,courseID

havingavg(score)>60

在select语句中,where、groupby、having子句和统计函数的执行次序如下:

where子句从数据源中去掉不符合去搜索条件的数据;groupby子句搜集数据行到各个组中,统计函数为各个组计算统计值;having子句去掉不符合其组搜索条件的各组数据行 。

下面为朋友们准备了一个演练场:

1. 外键数大于1,查出该外键(fgn_key)及相应的多条记录——

select id,fgn_key from T_Table where fgn_key in(

select fgn_key from T_Table group by fgn_key having count(fgn_key)>1

) order by fgn_key

如果朋友们在开发过程中对分组有特殊的运用,或者遇到比较巧妙的分组运用,请贴于下方,共同交流!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值