MySQL(python开发)——(5)聚合操作

MySQL(python开发)------(1)数据库概述及其MySQL介绍
MySQL(python开发)------(2)数据库基本操作及数据类型
MySQL(python开发)------(3)表数据的基本操作,增删改查
MySQL(python开发)------(4)高级查询语句

MySQL

聚合操作

聚合操作指的是在数据查找基础上对数据的进一步整理筛选行为,实际上聚合操作也属于数据的查询筛选范围。

1 .聚合函数

方法 功能
avg(字段名) 该字段的平均值
max(字段名) 该字段的最大值
min(字段名) 该字段的最小值
sum(字段名) 该字段所有记录的和
count(字段名) 统计该字段记录的个数

eg1 : 找出表中的最大攻击力的值?

mysql 复制代码
select max(attack) from sanguo;

eg2 : 表中共有多少个英雄?

mysql 复制代码
select count(name) as number from sanguo;

eg3 : 蜀国英雄中攻击值大于200的英雄的数量

mysql 复制代码
select count(*) from sanguo where attack > 200; 

注意: 此时select 后只能写聚合函数,无法查找其他字段,除非该字段值全都一样。

2 .聚合分组

  • group by

给查询的结果进行分组

e.g. : 计算每个国家的平均攻击力

mysql 复制代码
select country,avg(attack) from sanguo group by country;

e.g. : 对多个字段创建分组,此时多个字段都相同时为一组

mysql 复制代码
--统计每个国家男性英雄和女性英雄的平均攻击力
select country,gender,avg(attack) from sanguo
group by country,gender;

e.g. : 所有国家的男英雄中 英雄数量最多的前2名的 国家名称及英雄数量

mysql 复制代码
select country,count(id) as number from sanguo 
where gender='男' group by country
order by number DESC
limit 2;

注意: 使用分组时select 后的字段为group by分组的字段和聚合函数,不能包含其他内容。group by也可以同时依照多个字段分组,如group by A,B 此时必须A,B两个字段值均相同才算一组。

3. 聚合筛选

  • having语句

对分组聚合后的结果进行进一步筛选

mysql 复制代码
--统计平均攻击力大于250的国家的英雄数量
select country,count(*) from sanguo
group by country
having avg(attack)>250;

注意

  1. having语句通常与group by联合使用作为组的筛选。
  2. having语句存在弥补了where关键字不能与聚合函数联合使用的不足,where只能操作表中实际存在的字段。

4. 去重语句

  • distinct语句

不显示字段重复值

mysql 复制代码
eg1 : 表中都有哪些国家
  select distinct country from sanguo;
eg2 : 计算一共有多少个国家
  select count(distinct country) from sanguo;

注意: distinct和from之间所有字段都相同才会去重

sql 复制代码
聚合练习

1. 统计每位作家出版图书的平均价格
2. 统计每个出版社出版图书数量
3. 统计同一时间出版图书的最高价格和最低价格
4. 筛选出那些出版过超过50元图书的出版社,并按照其出版图书的平均价格降序排序

1. 统计每位作家出版图书的平均价格
select author,avg(price) from books
group by author;

2. 统计每个出版社出版图书数量
select press,count(*) from books
group by press;

3. 统计同一时间出版图书的最高价格和最低价格
select p_time,max(price),min(price) from books
group by p_time;

4. 筛选出那些出版过超过50元图书的出版社,
并按照其出版图书的平均价格降序排序
select press,avg(price) from books
group by press
having max(price) > 50
order by avg(price) desc;
相关推荐
一招定胜负2 分钟前
模板匹配与银行卡号识别(预告)
python·opencv·计算机视觉
七夜zippoe6 分钟前
实时数据处理:Kafka与Python构建高可靠流处理系统
分布式·python·kafka·集群·流处理·exactly-once
ai_top_trends8 分钟前
2026 年 AI 生成 PPT 工具推荐清单:测评后给出的答案
人工智能·python·powerpoint
a程序小傲9 分钟前
中国邮政Java面试被问:Kafka的Log Compaction实现和删除策略
java·开发语言·后端·python·面试·职场和发展·kafka
感觉不怎么会9 分钟前
Android 4.4 - APN类型扩展(一)
android·开发语言·python
warton8811 分钟前
ubuntu24搭建mysql8.0.36 mgr
linux·运维·mysql
_OP_CHEN13 分钟前
【测试理论与实践】(十)Web 项目自动化测试实战:从 0 到 1 搭建博客系统 UI 自动化框架
运维·自动化测试·python·测试开发·selenium·自动化·测试开发工程师
石像鬼₧魂石14 分钟前
补充章节:WPScan 实战后的 “打扫战场 + 溯源” 流程
数据库·学习·mysql
pulinzt17 分钟前
【python】第四节引入模版+文件的读取
开发语言·python
@zulnger1 小时前
读写Excel
开发语言·python·excel