【MySQL】数据分组(关键字:GROUP BY)过滤分组(关键字:HAVING)

文章目录

  • 数据分组,关键字:GROUP BY
  • 过滤分组,关键字:HAVING
  • 常见 SELECT 子句顺序

我是一名立志把细节说清楚的博主,欢迎【关注】🎉 ~

原创不易, 如果有帮助 ,记得【点赞】【收藏】 哦~ ❥(^_-)~

如有错误、疑惑,欢迎【评论】指正探讨,我会尽可能第一时间回复的,谢谢支持


数据分组,关键字:GROUP BY

  • 如果分组列中具有 NULL 值,则 NULL 将作为一个分组返回。如果列中有多行 NULL 值,它们将分为一组。
  • 如果有 WHERE 关键字,GROUP BY 子句必须出现在 WHERE 子句之后。
  • 如果有 ORDER BY 关键字,GROUP BY 子句必须出现在ORDER BY子句之前。

以基础的 WHERE 关键字作为比较对象,查询某一个班级学生数量。

SELECT COUNT(*) AS class_student_number
FROM student
WHERE class_number = 20230001;

输出

+-----------------------+
|  class_student_number |
+-----------------------+
|                     6 |
+-----------------------+

GROUP BY 使用示例:

SELECT s.class_number, count(*) AS class_student_number
FROM student s
GROUP BY s.class_number;

输出

+--------------+-----------------------+
| class_number |  class_student_number |
+--------------+-----------------------+
|     20230002 |                     3 |
|     20230001 |                     6 |
|     20230003 |                     1 |
+--------------+-----------------------+

过滤分组,关键字:HAVING

过滤 GROUP BY 关键字的分组,需要使用 HAVING 关键字。 HAVING 关键字的作用很类似于 WHERE 关键字。

区别是:

  • WHERE 关键字过滤行,在数据分组前进行过滤。
  • HAVING 关键字过滤组,在数据分组后进行过滤。
  • WHERE 排除的行不包括在分组中。

我们还使用上面示例数据演示比较:

SELECT s.class_number, count(*) AS class_student_number
FROM student s
GROUP BY s.class_number;

输出

+--------------+-----------------------+
| class_number |  class_student_number |
+--------------+-----------------------+
|     20230002 |                     3 |
|     20230001 |                     6 |
+--------------+-----------------------+

通过和上面没有使用HAVING 关键的查询结果比较,我们发现学生数只有一个的 20230003 班分组数据过滤出去了。


常见 SELECT 子句顺序

子句说明必须使用
SELECT要返回的列或表达式
FROM要检索的数据表仅在从表中选择数据时使用
WHERE行级过滤
GROUP BY分组仅在按组计算聚集时使用
HAVING组级过滤
ORDER BY返回数据排序
LIMIT限制返回结果行数

我是一名立志把细节说清楚的博主,欢迎【关注】🎉 ~

原创不易, 如果有帮助 ,记得【点赞】【收藏】 哦~ ❥(^_-)~

如有错误、疑惑 ,欢迎【评论】指正探讨,我会尽可能第一时间回复的,谢谢支持

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/833030.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在QEMU上运行OpenSBI+Linux+Rootfs

在QEMU上运行OpenSBILinuxRootfs 1 编译QEMU2 安装交叉编译工具3 编译OpenSBI4 编译Linux5 创建根文件系统5.1 编译busybox5.2 创建目录结构5.3 制作文件系统镜像5.3.1 创建 ext2 文件5.3.2 将目录结构拷贝进 ext2 文件5.3.3 取消挂载 6 运行OpenSBILinuxRootfs 本文所使用的版…

TitanIDE安装常见问题解答

在软件开发和编程的世界里,集成开发环境(IDE)扮演着至关重要的角色。TitanIDE作为一款功能强大的开发工具,深受广大开发者的喜爱。然而,在安装和使用TitanIDE的过程中,开发者们往往会遇到一些问题和挑战。针…

PostgreSQL连接拒绝如何解决和排查?

1. 服务器未运行 解决方案:确保 PostgreSQL 服务已启动。在 Linux 上,你可以使用如下命令来检查服务状态:sudo systemctl status postgresql如果服务未运行,使用以下命令启动它:sudo systemctl start postgresql2. Po…

设计宝典与速查手册,设计师必备资料合集

一、资料描述 本套设计资料,大小194.34M,共有13个文件。 二、资料目录 01-《商业设计宝典》.pdf 02-《色彩速查宝典》.pdf 03-《配色宝典》.pdf 04-《解读色彩情感密码》.pdf 05-《行业色彩应用宝典》.pdf 06-《构图宝典》.pdf 07-《创意宝典》…

绘唐ai工具怎么获取

这款产品的最大亮点在于其高度精准的语音克隆能力,利用先进的模型,能够捕捉到用户独特的音调、音高和调制方式,使用户能够以前所未有的方式复制和利用自己的声音。仅需10秒钟的录制时间,即可实现声音的克隆,相当便捷。…

代码随想录刷题随记30-贪心4

代码随想录刷题随记30-贪心4 860.柠檬水找零 leetcode链接 比较显然 class Solution {public boolean lemonadeChange(int[] bills) {int []accountnew int[3];for(int cur:bills){if(cur5)account[0];else if(cur10){account[0]--;if(account[0]<0)return false;account…

基于svm的手写数字识别程序介绍(matlab)

1、程序界面介绍 该程序GUI界面包括手写板、手写数字可视化&#xff08;原图&#xff09;、对图像进行灰度处理&#xff08;灰度图&#xff09;、图像二值化处理&#xff08;二值化&#xff09;、图像特征可视化&#xff08;HOG特征&#xff08;方向梯度直方图&#xff09;&…

鸿蒙内核源码分析(任务切换篇) | 看汇编如何切换任务

在鸿蒙的内核线程就是任务&#xff0c;系列篇中说的任务和线程当一个东西去理解. 一般二种场景下需要切换任务上下文: 在线程环境下&#xff0c;从当前线程切换到目标线程&#xff0c;这种方式也称为软切换&#xff0c;能由软件控制的自主式切换.哪些情况下会出现软切换呢? 运…

【C 数据结构-动态内存管理】2. 边界标识法管理动态内存

文章目录 【 1. 边界标识法的结构设计 】【 2. 分配算法 】【 3. 回收算法 】3.1 空闲块两侧是占用块3.2 空闲块左侧是空闲块3.3 空闲块右侧是空闲块3.3 空闲块两侧是空闲块 边界标识法 可以解决系统中内存碎片过多而无法使用的问题。 【 1. 边界标识法的结构设计 】 使用边界…

用PowerPoint创建毛笔字书写动画

先看看下面这个毛笔字书写动画&#xff1a; 这个动画是用PowerPoint创建的。下面介绍创建过程。 1、在任何一款矢量图片编辑软件中创建一个图片&#xff0c;用文字工具输入文字内容。我用的是InkScape。排好版后将图片保存为.svg格式的矢量图片文件。 2、打开PowerPoint&…

【C++泛型编程】(二)标准模板库 STL

文章目录 标准模板库 STL容器算法迭代器仿函数/函数对象适配器分配器示例 标准模板库 STL C 的标准模板库&#xff08;Standard Template Library&#xff0c;STL&#xff09;旨在通过模板化的设计&#xff0c;提供一种通用的编程模式&#xff0c;使程序员能方便地实现和扩展各…

暴雨发布大模型专用分布式全闪存储

近日&#xff0c;暴雨信息发布为大模型专门优化的分布式全闪存储AVERSE系列。该系列依托暴雨信息自研分布式文件系统&#xff0c;搭载新一代数据加速引擎Xdata&#xff0c;通过盘控协同、GPU直访存储、全局一致性缓存等技术为AI大模型数据归集、训练、数据归档与管理等阶段提供…

看完这篇文章我奶奶都懂Opentracing了 (二)

二. 概念分析 1. Span和SpanContext 结合上述示例&#xff0c;我们从Span开始入手来进行概念分析&#xff0c;但是说在最前面&#xff0c;Span在不同的分布式链路实现中&#xff0c;其定义是不全一样的&#xff0c;尽管Opentracing已经进行了概念的统一&#xff0c;但是具体到…

1-1ARM开发环境搭建(GD32)

1:安装MDK最好是5.27以及以上版本&#xff0c;避免后续学习中出现相关错误 2&#xff1a;安装芯片支持包 双击安装即可&#xff0c;也可以是默认路径&#xff0c;也可以自己更改路径 3&#xff1a;安装jlink下载器驱动&#xff08;下载调试器&#xff09; 具体安装步骤如下所示…

一键解密,网络安全神器现已问世!

一、简介 当前版本V1.1这款工具是一款功能强大的网络安全综合工具&#xff0c;旨在为安全从业者、红蓝对抗人员和网络安全爱好者提供全面的网络安全解决方案。它集成了多种实用功能&#xff0c;包括解密、分析、扫描、溯源等&#xff0c;为用户提供了便捷的操作界面和丰富的功…

一个好用的MQTT客户端软件

软件功能如下&#xff0c;实现的协议版本是 3.1.1 仅实现了常用的 CONNECT , PUBLISH , SUBSCRIBE 及相应的应答报文。支持以 Hex 格式显示接收的原始报文&#xff08;方便初学者学习&#xff09;。支持所有字段的自定义配置。支持保存与加载配置文件。 软件界面如下所示&…

ESP32 IDF linux下开发环境搭建

文章目录 介绍升级Python环境下载Python包配置编译环境及安装Python设置环境变量 ESPIDF环境搭建下载esp-idf 代码编译等待下载烧录成功查看串口打印 介绍 esp32 官方文档给的不是特别详细 参考多方资料 最后才完成开发 主要问题在于github下载的很慢本教程适用于ubuntu deban…

Vue生命周期都有哪些?

定义 Vue的生命周期就是实例从创建到销毁的一个过程&#xff0c;即从创建、初始化数据、编译模板、挂载Dom($el)->渲染、更新->渲染&#xff0c;卸载等一系列的过程。el是挂载点如<div id"app"></div>。 Vue的生命周期分为八个阶段 1.beforeCreate…

ubuntu20安装colmap

系统环境 ubuntu20 &#xff0c;cuda11.8 &#xff0c;也安装了anaconda。因为根据colmap的官方文档说的&#xff0c;如果根据apt-get安装的话&#xff0c;默认是非cuda版本的&#xff0c;而我觉得既然都安装了cuda11.8了&#xff0c;自然也要安装cuda版本的colmap。 安装步骤…

2022 年全国职业院校技能大赛高职组云计算赛项试卷(容器云)

#需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私聊博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私聊博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件包…