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

打印 上一主题 下一主题

主题 530|帖子 530|积分 1590

MySQL(python开辟)——(1)数据库概述及其MySQL先容
MySQL(python开辟)——(2)数据库根本操作及数据类型
MySQL(python开辟)——(3)表数据的根本操作,增删改查
MySQL(python开辟)——(4)高级查询语句
MySQL

聚合操作

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

方法功能avg(字段名)该字段的平均值max(字段名)该字段的最大值min(字段名)该字段的最小值sum(字段名)该字段全部记录的和count(字段名)统计该字段记录的个数 eg1 : 找出表中的最大攻击力的值?
  1. select max(attack) from sanguo;
复制代码
eg2 : 表中共有多少个英雄?
  1. select count(name) as number from sanguo;
复制代码
eg3 : 蜀国英雄中攻击值大于200的英雄的数量
  1. select count(*) from sanguo where attack > 200;
复制代码
  注意: 此时select 后只能写聚合函数,无法查找其他字段,除非该字段值全都一样。
  2 .聚合分组



  • group by
给查询的效果举行分组
e.g. : 计算每个国家的平均攻击力
  1. select country,avg(attack) from sanguo group by country;
复制代码
e.g. : 对多个字段创建分组,此时多个字段都雷同时为一组
  1. --统计每个国家男性英雄和女性英雄的平均攻击力
  2. select country,gender,avg(attack) from sanguo
  3. group by country,gender;
复制代码
e.g. : 全部国家的男英雄中 英雄数量最多的前2名的 国家名称及英雄数量
  1. select country,count(id) as number from sanguo
  2. where gender='男' group by country
  3. order by number DESC
  4. limit 2;
复制代码
  注意: 使用分组时select 后的字段为group by分组的字段和聚合函数,不能包含其他内容。group by也可以同时依照多个字段分组,如group by A,B 此时必须A,B两个字段值均雷同才算一组。
  3. 聚合筛选



  • having语句
对分组聚合后的效果举行进一步筛选
  1. --统计平均攻击力大于250的国家的英雄数量
  2. select country,count(*) from sanguo
  3. group by country
  4. having avg(attack)>250;
复制代码
  注意
  

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



  • distinct语句
不表现字段重复值
  1. eg1 : 表中都有哪些国家
  2.   select distinct country from sanguo;
  3. eg2 : 计算一共有多少个国家
  4.   select count(distinct country) from sanguo;
复制代码
  注意: distinct和from之间全部字段都雷同才会去重
  1. 聚合练习
  2. 1. 统计每位作家出版图书的平均价格
  3. 2. 统计每个出版社出版图书数量
  4. 3. 统计同一时间出版图书的最高价格和最低价格
  5. 4. 筛选出那些出版过超过50元图书的出版社,并按照其出版图书的平均价格降序排序
  6. 1. 统计每位作家出版图书的平均价格
  7. select author,avg(price) from books
  8. group by author;
  9. 2. 统计每个出版社出版图书数量
  10. select press,count(*) from books
  11. group by press;
  12. 3. 统计同一时间出版图书的最高价格和最低价格
  13. select p_time,max(price),min(price) from books
  14. group by p_time;
  15. 4. 筛选出那些出版过超过50元图书的出版社,
  16. 并按照其出版图书的平均价格降序排序
  17. select press,avg(price) from books
  18. group by press
  19. having max(price) > 50
  20. order by avg(price) desc;
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

梦应逍遥

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表