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

本文详细介绍了数据库查询中的分组统计方法,包括GROUP BY和HAVING子句的使用。通过实例展示了如何利用聚合函数如SUM、AVG、MAX、MIN进行数据统计,并解释了WHERE、GROUP BY、HAVING子句的执行顺序。同时,提供了一段演练代码,演示如何查询外键数大于1的记录。欢迎分享你在开发中遇到的独特分组运用案例,一起探讨交流。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分组查询

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值