【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.mfbz.cn/a/601193.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

fero - yolo - mamba:基于选择性状态空间的面部表情检测与分类

fero - yolo - mamba:基于选择性状态空间的面部表情检测与分类 摘要IntroductionRelated work FER-YOLO-Mamba: Facial Expression Detection and Classification Based on Selective State Space 摘要 面部表情识别(FER)在理解人类情绪线索方面起着关键…

S型曲线的几种设计(图像对比度调节)

一般来讲,图像调色模块都会提供“曲线”工具,这是一个极其灵活的功能,绝大部分的调色都可以通过该工具实现,但是曲线功能的交互相对而言比较复杂。出于简便性和效率方面的考量,调色模块往往还会提供一些具有很强的功能…

Angular中创建和使用服务

Angular中的服务 文章目录 Angular中的服务前言一、创建服务二、使用服务 前言 Angular 服务是 Angular 应用程序中用于封装可重用逻辑的类。服务在应用程序的多个组件之间共享数据和功能,而不依赖于应用程序的UI。服务可以用于诸如数据处理、与后端通信、用户身份…

电脑显示丢失mfc140u.dll怎么修复,总共有7个方法

mfc140u.dll 是一个动态链接库(Dynamic Link Library)文件,它是Microsoft Foundation Class (MFC)库的一部分,专为使用C编程语言开发Windows应用程序而设计。MFC库由微软提供,作为一个高级的应用程序框架,旨…

通过 Java 操作 redis -- 连接 redis

如果我们想在本地主机上访问 Linux 服务器上的 redis ,我们就需要通过 ssh 进行端口转发,推荐看 本地主机访问服务器的Redis -- 配置 ssh 端口转发 通过 Java 操作 redis 已经有大佬创建了很多第三方库,这里我们使用 jedis ,因为它…

N7552A是德科技N7552A电子校准件

181/2461/8938产品概述: 更小巧轻便的 2 端口模块,支持 3.5 mm 或 N 型 50 Ω 连接器,能够将校准时间缩短一半 特点 频率范围:直流至 9 GHz 使用 N 型或 3.5 mm 连接器 更小巧轻便的 2 端口电子校准件(ECal&#xff…

Linux:进程等待 进程替换

Linux:进程等待 & 进程替换 进程等待wait接口statuswaitpid接口 进程替换exec系列接口 当一个进程死亡后,会变成僵尸进程,此时进程的PCB被保留,等待父进程将该PCB回收。那么父进程要如何回收这个僵尸进程的PCB呢?父…

《Fundamentals of Power Electronics》——示例:Buck-Boost转换器模型变为正则形式

为了说明正则电路模型推导的步骤,让我们将buck-boost转换器的等效电路操作成规范形式。buck-boost转换器的一个小信号交流等效电路如下图所示。 为了将上图所示网络转换成正则形式,需要将所有独立源d(t)转换到左侧,而将所有电感转换到右侧与变…

PHP 匿名函数和闭包在数据结构中的应用

匿名函数和闭包在数据结构处理中的应用php 中的匿名函数和闭包可用于处理数组、链表和队列等数据结构。针对数组,匿名函数可用于过滤元素;针对链表,闭包可用于创建节点;针对队列,匿名函数和闭包可实现 fifo 队列操作。…

css 文字描边

又是抄样式的一天。这次是百度地图。实现了问题和图形描边的效果。 代码: .BMap_scaleTxt.dark {color: #fff;text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000; } 效果:

uniapp打包的程序在Xcode中运行到模拟器报错的解决方法

uniapp打包的程序在Xcode中运行到模拟器报错的解决方法 问题描述: Building for iOS-simulator, but linking in object file (/Users/hori/Documents/SDK/SDK/Libs/DCUniRecord.framework/DCUniRecord[arm64][3](PGRecord.o)) built for iOS Linker command fail…

翻译《The Old New Thing》- Does Windows have a limit of 2000 threads per process?

Does Windows have a limit of 2000 threads per process? - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20050729-14/?p34773 Raymond Chen 2005年07月29日 Windows 是否有一个每个进程2000线程的限制? 简要 文章解释了在 W…

快速搭建linux虚拟机环境

1、虚拟机资源 VMwareWorkstation:Download VMware Workstation Pro virtualbox:Oracle VM VirtualBox 2、虚拟机系统资源 链接:系统资源链接 提取码:0gat 说明:此处的系统资源是采用VMwareWorkstation 虚拟机进…

vue脚手架和vite创建的项目的环境配置

开发环境文件 .env.development NODE_ENV"development" # // 开发接口域名 本地测试就用这个 # vue脚手架创建的 VUE_APP_MODE"开发环境" VUE_APP_API_URL http://19527 # vite创建的 # VITE_MODE"开发环境" # VITE_BASE_URL http://1920:9527…

【自动驾驶|毫米波雷达】逻辑化讲清快时间与慢时间傅里叶变换

碎碎念:实习过程中发现在进行雷达知识交流时,大部分同事都会用英文简称代替中文的一些称呼,比如Chirp、FFT等等。起初我觉得是因为很多英伟达、TI芯片的开发教程都是英文的,所以看得多了大家都习惯这样称呼,后来在和指…

Linux高级学习(前置 在vmware安装centos7.4)

【小白入门 通俗易懂】2021韩顺平 一周学会Linux 此文章包含第006p-第p007的内容 操作 在安装好的vmware下进行安装 这里使用的是vmware15(win10下),win11可能无法使用15(有几率蓝屏),换成16就行了 用迅雷…

将PT脚本转化为innovus脚本

前一节写的关于PT修时序后吐出相关脚本,但是无法直接使用APR工具innovus进行时序修复,此节介绍一种利用perl脚本将吐出脚本转化为innovus可读的脚本 1.转化前文本形式 2,转化后脚本 3.perl 脚本正文 #!/usr/bin/perl #transla…

【完美解决】使用git时候出现error setting certificate verify locations: CAfile:问题

1、出现场景: 在使用idea的时候,进行git下的push,出现下面的错误: 2、原因分析: 可能因为重装过系统,或者是安装git的位置发生了变化等情况出现。 3、解决方案: 找到git的安装路径&#xf…

Layer创建流程

在SurfaceFlinger中,Layer表示一个显示图层,是surfaceflinger合成过程中最重要的基本单元,它提供了一系列属性定义了如何参与合成并与其他Layer交互,包括: 位置:定义Layer出现在屏幕上的位置,包…

回归分析的理解

1.是什么: 2.回归问题的求解: 首先是根据之前的数据确定变量和因变量的关系根据关系去预测目标数据根据结果做出判断 2.1如何找到关系? y’是根据模型生成的预测结果: y’axb,而我们的目的是y’和y(正确的结果)之间…