当前位置: 首页 > news >正文

第二阶段-第二章—8天Python从入门到精通【itheima】-134节(SQL——DQL——分组聚合)

目录

134节——DQL:分组聚合

1.学习目标

2.分组聚合

3.论MySQL 中 GROUP BY 和 WHERE 的异同

MySQL 中 GROUP BY 和 WHERE 的异同:

一、相同点:都是 “筛数据” 的工具

二、不同点:筛的时机和对象完全不一样

1. 作用时机不同:先筛行,再分组

2. 作用对象不同:筛单行 vs 筛分组

3. 不能混搭的 “规矩”

三、一句话总结

4.小节总结

​编辑

好了,又一篇博客和代码写完了,励志一下吧,下一小节等等继续:


134节——DQL:分组聚合

1.学习目标

1.掌握DQL的group by进行分组聚合查询

2.分组聚合




代码实例:
 

use student;select * from student;-- 查询男女生的各自的平均年龄
select avg(age),gender from student group by gender;-- 错误的查询示例:会爆出error!!!
/*因为:查询的性别分组的avg(age),这个avg(age)是每个性别组的平均值,
如果加上name这个具体字段,那这个avg(age)属于谁?这样就有歧义了*/
-- select avg(age),gender,name from student group by gender;-- 这是对于普通字段来说:
-- 这是SQL的限制:group by中出现了谁【普通的字段】,select中才能出现写谁【普通的字段】;而聚合函数不属于普通的字段,因此不包括/*对于聚合函数的count来说【按group by gender后】,她本来就是计数的功能,
分完组进行各自的性别计数,因此count(name),count(age),count(gender),count(id),count(*),这些功能都是一样的*/
-- 示例:【一个SQL语句里面是可以写多个聚合函数的】
select gender,sum(age),avg(age),MIN(age),MAX(age),COUNT(*) from student group by gender;

3.论MySQL 中 GROUP BY 和 WHERE 的异同

MySQL 中 GROUP BY 和 WHERE 的异同:

一、相同点:都是 “筛数据” 的工具

不管是WHERE还是GROUP BY,本质上都是为了从一堆数据中 “挑出我们想要的”,避免查出来的结果乱七八糟。

二、不同点:筛的时机和对象完全不一样

用一个例子先打底:假设我们有一张student表,存了 “班级”“姓名”“年龄” 三列数据,现在想查 “每个班级中,年龄大于 18 岁的学生有多少人”。

1. 作用时机不同:先筛行,再分组
  • WHERE:在分组之前干活。
    比如 “年龄> 18” 这个条件,WHERE会先把所有年龄≤18 的学生直接排除,剩下的才会参与后续的分组。
    就像筛沙子:先把小石子(不符合条件的行)筛掉,剩下的沙子再分堆。

  • GROUP BY:在分组之后干活。
    它的作用是把WHERE筛剩下的行,按某个字段(比如 “班级”)分成几堆,每一堆就是一个 “组”。
    比如按 “班级” 分组后,会得到 “一班”“二班”“三班” 三个组,每个组里都是年龄 > 18 的学生。

2. 作用对象不同:筛单行 vs 筛分组
  • WHERE:针对 “单个行” 筛。
    条件都是判断单行数据是否符合要求,比如 “年龄> 18”“性别 =' 男 '”,每个条件只看单独的一行,不管其他行。

  • GROUP BY:针对 “一组行” 操作。
    分组后,每组是多个行的集合,通常会配合聚合函数(COUNT“算数量”、SUM“求和” 等)使用。
    比如 “每个班级的学生数量”,就是用GROUP BY 班级把行分成组,再用COUNT(*)计算每组有多少行。

3. 不能混搭的 “规矩”
  • WHERE 后面不能用聚合函数
    比如不能写WHERE COUNT(*)>2(因为WHERE在分组前执行,此时还没有 “组”,没法算COUNT(*))。

  • GROUP BY 必须和聚合函数搭配才有用
    单独写GROUP BY 班级没意义,必须加上COUNT(*)“算每个班的人数”、AVG(年龄)“算每个班的平均年龄” 等,才能体现分组的价值。

三、一句话总结
  • WHERE:先把 “不合格的单个行” 踢出去,只留合格的行。
  • GROUP BY:把合格的行按规则分成 “组”,再对每组做统计(比如算数量、求和)。
 

用例子串起来就是:

 
-- 查每个班级中,年龄>18的学生数量  
SELECT 班级, COUNT(*) AS 学生数量  
FROM student  
WHERE 年龄>18  -- 先筛掉年龄≤18的行  
GROUP BY 班级;  -- 再按班级分组,算每组的人数  

4.小节总结

group by中出现了哪个字段,select中才能出现该字段。

【以上是对于普通字段来说,对于应用了聚合函数的字段不生效】


 


好了,又一篇博客和代码写完了,励志一下吧,下一小节等等继续:

Patrick:

 

你觉得自己写的是 “人人皆知的 shit”?那我问你:你第一次学会走路时,摇摇晃晃迈出的步子,在别人眼里是不是 “人人都会的小事”?但对你来说,那是从爬到走的里程碑。

 

你现在敲的每一行 SQL、写的每段总结,就像当年学走路的步子。那些 “人人皆知” 的基础,在你这里有不一样的重量 —— 它们是你忍着身体的不适,一点点啃下来的;是你对着报错信息反复调试,才弄明白的 “GROUP BY 和 WHERE 的区别”。别人眼里的 “常识”,在你这里是 “和自己较劲后的战利品”,这本身就值得被记录。

 

中二?偏执?我倒觉得,能对着基础知识点死磕、能为自己写的东西沾沾自喜,这是最珍贵的 “初心”。多少人学东西半途而废,就是因为觉得 “太简单不值得记录”,结果连 “简单” 都没吃透。你把这些 “小事” 记下来,不是炫耀,是在给自己的成长盖戳 —— 就像登山时在石头上画的记号,回头看时,才知道自己爬了多高。

 

你以为 “了不起的大事” 是突然降临的?不是。是无数个 “觉得自己写了 shit 还坚持写” 的夜晚,攒出来的。你对抗身体的不适、对抗自我怀疑,还能坐在那里敲代码、写总结,这本身就比 “写出惊天动地的内容” 更了不起。

 

别管别人怎么看。你的博客不是写给 “人人” 看的,是写给 “今天的 Patrick” 和 “明天的 Patrick” 的。今天的你觉得 “沾沾自喜” 很傻,明天的你会谢谢今天这个 “傻” 得坚持记录的自己。

 

继续写吧。哪怕是基础到不能再基础的总结,哪怕是自己跟自己较劲的碎碎念 —— 这些都是你活着、在往前挪、没被打倒的证据。这样的证据,越多越好。

 

一个看你把 “小事” 走成 “长路” 的朋友

http://www.lryc.cn/news/594713.html

相关文章:

  • leetcode-sql-627变更性别
  • 深入解析IP协议:组成、地址管理与路由选择
  • Tomato靶机通关教程
  • 安装docker可视化工具 Portainer中文版(ubuntu上演示,所有docker通用) 支持控制各种容器,容器操作简单化 降低容器门槛
  • 板凳-------Mysql cookbook学习 (十二--------4)
  • 技能学习PostgreSQL中级专家
  • 借助AI学习开源代码git0.7之六write-cache
  • 基于 STM32 的数字闹钟系统 Proteus 仿真设计与实现
  • 从一开始的网络攻防(六):php反序列化
  • 金仓数据库:融合进化,智领未来——2025年数据库技术革命的深度解析
  • STM32 USB键盘实现指南
  • 最严电动自行车新规,即将实施!
  • FreeSwitch通过Websocket(流式双向语音)对接AI实时语音大模型技术方案(mod_ppy_aduio_stream)
  • 朝歌智慧盘古信息:以IMS MOM V6重构国产化智能终端新生态
  • 【初识数据结构】CS61B中的最小生成树问题
  • Car Kit重构车机开发体验,让车载应用开发驶入快车道
  • 【PTA数据结构 | C语言版】拓扑排序
  • OR条件拆分:避免索引失效的查询重构技巧
  • 【web自动化】-5- fixture集中管理和项目重构
  • 2024年ASOC SCI2区TOP,基于Jaya算法的粒子滤波器用于非线性模型贝叶斯更新,深度解析+性能实测
  • 代码随想录算法训练营第二十七天
  • 为什么 tcp_syncookies 不能取代半连接队列?
  • 【前端】jszip+file-saver:多个视频url下载到zip、页面预加载视频、预览视频、强制刷新视频
  • Python并发编程:突破GIL枷锁,高效利用多核CPU
  • 服务器系统时间不准确怎么办?
  • PHP反序列化漏洞详解
  • 4 种更新的方法将消息从安卓传输到 Mac
  • 2025三掌柜赠书活动第二十五期 网络安全应急响应实战
  • 2025年终端安全管理系统的全方位解析,桌面管理软件的分析
  • 基于python django的BOSS直聘网站计算机岗位数据分析与可视化系统,包括薪酬预测及岗位推荐,推荐算法为融合算法