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

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

系列文章目录

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


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


前言

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值