MySQL学习使用[9天系列 学习笔记 Day06]

本文是MySQL学习系列的第六天,主要讲解了如何使用GROUP BY子句进行数据分组统计,并介绍了HAVING子句用于限制分组输出的条件过滤。通过实例解析了如何统计每个出版社图书的平均价格、按读者编号统计未还图书数量以及查询出版社图书总价格等操作,强调了GROUP BY和HAVING子句在SQL查询中的重要性。

系列文章目录

MySQL学习使用[9天系列 学习笔记]
Day01了解和创建数据库
(附上链接Day01:
https://blog.youkuaiyun.com/besthtml/article/details/128055581?
Day02创建、查看和删除表
https://blog.youkuaiyun.com/besthtml/article/details/128066352?
Day03更新数据和简单查询
https://blog.youkuaiyun.com/besthtml/article/details/128069269?
Day04模糊查询、结果排序和限制输出行
https://blog.youkuaiyun.com/besthtml/article/details/128085013?
Day05统计函数和其他函数的使用
https://blog.youkuaiyun.com/besthtml/article/details/128086178?
Day06分组统计和限制分组输出
https://blog.youkuaiyun.com/besthtml/article/details/128092918
Day07嵌套查询和连接查询
https://blog.youkuaiyun.com/besthtml/article/details/128099111
Day08视图、索引、备份和恢复
https://blog.youkuaiyun.com/besthtml/article/details/128108602?
Day09事务
https://blog.youkuaiyun.com/besthtml/article/details/128115542?


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

通过Day01了解数据库的创建,Day02了解了创建、查看和删除表,Day03了解了更新数据和简单查询,Day04了解模糊查询、结果排序和限制输出行,Day05使用统计函数和其他函数,Day06我们需要掌握会在SQL数据查询语句中使用group by子句进行分组统计。会在SQL数据查询语句中综合运用分组、排序和统计函数。会在SQL数据查询语句中使用having子句对分组进行筛选,输出满足筛选条件的查询结果。会在SQL数据查询语句中综合运用where、分组、having、排序和统计函数。
Day01传送门https://blog.youkuaiyun.com/besthtml/article/details/128055581
Day02传送门https://blog.youkuaiyun.com/besthtml/article/details/128066352?
Day03传送门https://blog.youkuaiyun.com/besthtml/article/details/128069269?
Day04传送门https://blog.youkuaiyun.com/besthtml/article/details/128085013?
Day05传送门
https://blog.youkuaiyun.com/besthtml/article/details/128086178?
Day06分组统计和限制分组输出


提示:以下是本篇文章正文内容,下面案例可供参考

分组统计和限制分组输出

一、分组统计

1.group by子句

前面Day05的几个例题select子句只包含统计函数,我们接下来看看下面一个查询。
例 统计每个出版社图书的平均价格,输出出版社名称和相应的平均价格。

 SELECT pubcomp, AVG(price)  FROM book;

但是这个语句得出的结果错误
分析:前面的例题函数的作用对象都是中间结果集,而本例中函数的作用对象是各个图书的出版社数据行。函数的作用对象细化了,这时需要分组统计。
正确结果应为

SELECT pubcomp, AVG(price)  FROM book GROUP BY 	pubcomp;

例 按读者编号统计各读者借阅未还的图书数量,结果按照读者编号的升序排列。

SELECT count(rid) as '借阅未还的图书数量' from  borrow
where returndate is null
group by rid   
order by rid asc;

例 查询各出版社现存图书的总量(计算现存数量的和)。

select pubcomp,sum(bcount) from book
group by pubcomp;

GROUP BY子句:
当需要输出的数据既包含函数还包含其他列名时,或者函数的作用对象细化时,需要用到分组统计
Select子句中没有包含在函数中的列名肯定是分组依据,也就是group by 子句中的列,也就是在一条select语句当中,如果有group by语句的话,select 后面只能跟参加分组的字段以及分组函数。
GROUP BY子句的作用对象是查询的中间结果表
分组方法:按指定的一列或多列值分组,值相等的为一组

二、限制分组输出

前面我们学的分组查询中,所有分组的统计结果都输出,还有一些情况只输出满足条件的分组。在这里就需要应用到having子句。
限定分组或统计函数的检索条件时,就用到having子句。
having子句的使用方法与where子句类似,都用于设置条件
但是HAVING子句只修饰group by子句,其中可以使用统计函数,而WHERE子句中不可以。
只有满足HAVING短语指定条件的组才输出
HAVING短语与WHERE子句的区别:作用对象不同
WHERE子句作用于基表或视图,从中选择满足条件的元组。
HAVING短语作用于组,从中选择满足条件的组

例 查询各出版社图书的总价格,显示总价格大于100出版社和总价格

select pubcomp,sum(price) from book 
group by pubcomp 
having sum(price)>100;

总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容。进行一个小总结。
编写顺序为
select···
from···
where···
group by···
having···
order by···
执行顺序为
from
where
group by
having
select
order by
Day07开始学习嵌套查询和连接查询

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值