sql查询篇,group by查询

本文详细解释了GROUPBY查询在Oracle数据库中的应用,包括分组原则、聚合函数的使用、WHERE和HAVING子句的作用,并举例说明了多字段分组的逻辑。

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

目录

一、 GROUP BY 查询


一、 GROUP BY 查询

group by 为分组查询。先看一个示例:

pl/sql中查询出oracle数据库的一张表:

查询出学校一年级,一班的男/女生各有多少人,且男/女生的最大年龄是多少。SQL如下

select school,grade,class,sex,count(sex),max(age) from STU where 
class='1班' and grade='一年级' group by sex,class,grade,school

分析:分组查询由select, from, where, group by, having, order by 以及聚合函数等组成。

以上分组语句的查询结果为:

聚合函数有: sum(求和)、 count(*)(记录数)、 max(最大值)、 min(最小值)、avg(平均值)。

GROUP BY 后面跟 分类聚合的字段。

HAVING 子句 对分类后的结果再进行筛选。

WHERE 子句 对分类聚合前的数据进行筛选。

注:在SELECT 中查询的字段 必须使用聚合函数 或者 不使用聚合函数而出现在GROUP BY 子句中。而 GROUP BY 子句中出现的字段 不一定要写在 SELECT 语句后。

HAVING 子句的使用:查询男/女分组后count()数大于4的。sql语句如下

select school,grade,class,sex,count(sex),max(age) from STU where 
class='1班' and grade='一年级' group by sex,class,grade,school 
having count(sex)>4

使用having 子句的查询结果为:

 说明:GROUP BY 子句后多个字段的分组,如 group by a,b,c 先对a 属性进行分组,其次对b 属性,最后c 属性。但是,最终分组结果受 group by 子句中 最为 细分 的属性字段影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值