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

【MySql】数据库的聚合查询

写在最前面的话

        哈喽,宝子们,今天给大家带来的是MySql数据库的聚合查询。在前面CRUD章节我们学习了表达式查询,表达式查询是针对列和列之间进行运算的,那么如果想在行和行之间进行运算,那么就需要用到聚合查询。聚合查询除了包含聚合函数外(count,sum,avg,max,min),还包含group by 和 having 语句。接下来让我们一起进入学习吧,感谢大家的支持!喜欢的话可以三连哦~~~

目录

一、聚合函数

1、COUNT([DISTINCT]expr)

2、SUM([DISTINCT]expr)

3、AVG([DISTINCT]expr)

4、MAX([DISTINCT]expr)

5、MIN([DISTINCT]expr)

二、GROUP BY子句

三、HAVING子句


一、聚合函数

        常见的统计总数、计算平局值等操作,可以使用聚合函数来实现,常见的聚合函数有:

函数说明
COUNT([DISTINCT]expr)

返回查询到的数据的 数量

SUM([DISTINCT]expr)返回查询到的数据的 总和,不是数字没有意义
AVG([DISTINCT]expr)返回查询到的数据的 平均值,不是数字没有意义
MAX([DISTINCT]expr)返回查询到的数据的 最大值,不是数字没有意义
MIN([DISTINCT]expr)返回查询到的数据的 最小值,不是数字没有意义

插入测试表

        为了大家更好的学习聚合函数,我们在学习前先创建一张测试表并插入数据,下面的学习案例都通过这张表举例子:

--创建考试成绩表
CREATE TABLE exam_result (
id INT,
name VARCHAR(20),
chinese DECIMAL(3,1),
math DECIMAL(3,1),
english DECIMAL(3,1)
);
-- 插入测试数据
INSERT INTO exam_result (id,name, chinese, math, english) VALUES
(1,'唐三藏', 67, 98, 56),
(2,'孙悟空', 87.5, 78, 77),
(3,'猪悟能', 88, 98, 90),
(4,'曹孟德', 82, 84, 67),
(5,'刘玄德', 55.5, 85, 45),
(6,'孙权', 70, 73, 78.5),
(7,'宋公明', 75, 65, 30);

1、COUNT([DISTINCT]expr)

把数据表中的数据数量进行汇总,返回汇总的结果。

语法:

select count(表达式) from 表名;--表达式可为*或列名

学习案例

*:

select count(*) from exam_result;--使用*

执行上述SQL语句后,运行结果如下图所示: 

列名:

select count(name) from exam_result;--使用列名

 执行上述SQL语句后,运行结果如下图所示: 

拓展知识:大家会发现使用列名与使用*号达到的效果是一样的,但其实如果当前列为NULL,使用列名就不会计算进去,而使用*号就会。

当插入一条name为NULL的数据,再次运行结果如下图所示:

 distinct:

select count(distinct name) from exam_result;--使用distinct去重

执行上述SQL语句后,运行结果如下图所示: 

 2、SUM([DISTINCT]expr)

把这一列的若干行进行求和(算术运算),只能针对数字类型使用。

语法:

select sum(表达式) from 表名;--表达式为列名

 学习案例

---计算所有同学的语文成绩

select sum(chinese) from exam_result;--如果数据中有null会被排除掉

---计算所有科目的总成绩

select sum(chinese+math+english) from exam_result;--如果数据中有null会被排除掉

 3、AVG([DISTINCT]expr)

把这一列的若干行进行平均值运算(算术运算),只能针对数字类型使用。

语法:

select avg(表达式) from 表名;--表达式为列名

 学习案例

---计算数学成绩的平均值

select avg(math) from exam_result;

---计算所有科目总成绩的平均值

select avg(chinese+math+english) from exam_result;

 4、MAX([DISTINCT]expr)

把这一列的若干行进行求最大值(算术运算),只能针对数字类型使用。

 语法:

select max(表达式) from 表名;--表达式为列名

学习案例

---计算英语成绩的最大值

select max(exglish) from exam_result;

---计算所有科目总成绩的最大值

select max(chinese+math+english) from exam_result;

5、MIN([DISTINCT]expr)

把这一列的若干行进行求最小值(算术运算),只能针对数字类型使用。

语法:

select min(表达式) from 表名;--表达式为列名

 学习案例

---计算数学成绩的最小值

select min(math) from exam_result;

---计算所有科目总成绩的最小值

select min(chinese+math+english) from exam_result;

二、GROUP BY子句

插入测试表

为了大家更好的学习group by,我们在学习前先创建一张测试表并插入数据,下面的学习案例都通过这张表举例子:

---创建员工表
create table emp(id int primary key auto_increment,name varchar(20),role varchar(20),salary int);
---插入数据
insert into emp values(null,'张三','程序员',1688);
insert into emp values(null,'李四','程序员',1888);
insert into emp values(null,'王五','程序员',1988);
insert into emp values(null,'赵六','产品经理',168);
insert into emp values(null,'田七','产品经理',188);
insert into emp values(null,'周八','老板',8888);

 group by是针对指定的列进行分组,把这一列中值相同的行分到一组中再分别使用聚合函数。

语法:

select 列名,聚合函数 from 表名 group by 列名;

 学习案例

---计算不同职务的平均工资

select role,avg(salary) from emp group by role;--先分组,再算平均值

执行上述SQL语句后,运行结果如下图所示: 

拓展知识:如果只分组不使用聚合函数可能无法得到准确数据,会得到每组的第一条记录(如下图所示)。

三、HAVING子句

group by 子句进行分组以后,需要对分组结果再进行条件过滤时,不能使用 where语句,而需要用having。

语法:

select 列名,聚合函数 from 表名 group by 列名;

 学习案例:

使用group by的时候还可以搭配其它条件,但是需要区分清楚该条件是在分组前的条件还是分组后的条件。

 ---查询每个岗位的平均工资,但是排除张三(分组之前)

select role,avg(salary) from emp where name!='张三' group by role;
---先进行where筛选,再根据role分组,最后使用avg算平均

执行上述SQL语句后,运行结果如下图所示: 

---查询每个岗位的平均工资,但排除平均工资超过2k的结果(分组之后)

select role,avg(salary) from emp group by role having avg(salary)<2000;

执行上述SQL语句后,运行结果如下图所示: 

拓展知识:在group by中可以一条sql语句完成上述两者的条件筛选。

---查询每个岗位的平均工资,但是排除张三并保留平均值<2k的结果

select role,avg(salary) 
from emp 
where name!='张三' 
group by role 
having avg(salary)<2000;

执行上述SQL语句后,运行结果如下图所示: 


        希望各位读者阅读后都能有所收获,如果喜欢本篇博客的可以点赞+关注+收藏!!!同时也欢迎各位大神如果在阅读过程中发现文章有错误也可私信指正错误,我们下一篇博客再见~~~ 

相关文章:

【MySql】数据库的聚合查询

写在最前面的话 哈喽&#xff0c;宝子们&#xff0c;今天给大家带来的是MySql数据库的聚合查询。在前面CRUD章节我们学习了表达式查询&#xff0c;表达式查询是针对列和列之间进行运算的&#xff0c;那么如果想在行和行之间进行运算&#xff0c;那么就需要用到聚合查询。聚合查…...

Linux初探 - 概念上的理解和常见指令的使用

目录 Linux背景 Linux发展史 GNU 应用场景 发行版本 从概念上认识Linux 操作系统的概念 用户的概念 路径与目录 Linux下的文件 时间戳的概念 常规权限 特殊权限 Shell的概念 常用指令 ls tree stat clear pwd echo cd touch mkdir rmdir rm cp mv …...

苹果上架Guideline 4.3 - Design

最近上架苹果商店&#xff0c;审核提示 Guideline 4.3 - DesignWe noticed your app shares a similar binary, metadata, and/or concept as apps previously submitted by a terminated Apple Developer Program account.Submitting similar or repackaged apps is a form o…...

【数据分析入门】【淘宝电商API接入与电商数据分析】初识Web API(一)

今天开始我们将学习如何使用Web应用变成借口(API)自动请求网站到特定信息而不是整个网站&#xff0c;再对这些信息进行可视化。由于这样编写到程序始终使用最新到数据来生成可视化&#xff0c;因此即便数据瞬息万变&#xff0c;它呈现到信息也都是最新的。比如&#xff0c;我们…...

蓝桥杯官网练习题(李白打酒)

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 话说大诗人李白&#xff0c;一生好饮。幸好他从不开车。 一天&#xff0c;他提着酒壶&#xff0c;从家里出来&#xff0c;酒壶中有酒2斗。他边走边唱&#xff1a; …...

聚类分析 | MATLAB实现基于SOM自组织特征映射聚类可视化

聚类分析 | MATLAB实现基于SOM自组织特征映射聚类可视化 目录 聚类分析 | MATLAB实现基于SOM自组织特征映射聚类可视化效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于自组织特征映射聚类算法(SOM)的数据聚类可视化 可直接运行 注释清晰 Matlab语言 1.多特征输入&…...

Spring AOP:面向切面编程在实际项目中的应用

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…...

python爬虫的反扒技术有哪些如何应对

Python爬虫常见的反扒技术主要有以下几种: IP封禁&#xff1a;有些网站会限制爬虫的IP访问频率&#xff0c;如果访问流量过大&#xff0c;可能会被封禁IP。可以通过使用代理IP或者轮换IP的方式规避此类反扒技术。 用户代理限制&#xff1a;有些网站会通过检测请求头中的用户代…...

网络原理,了解xml, json,protobuffer的特点

目录 外卖服务器场景带入 大佬们通用的规范格式 一、&#x1f466; 外卖服务器场景 外面服务器沟通有很多模式——展示商家列表等等&#xff0c;只是其中一个&#xff0c;因此需要一个统一的规划了——不同应用程序&#xff0c;里面的自定义格式是不一样的&#xff0c;这样的…...

工具 | XShell的学习与使用

工具 | XShell的学习与使用 时间&#xff1a;2023年9月8日09:03:29 文章目录 工具 | XShell的学习与使用1.下载2.安装 1.下载 1.官网XSHELL - NetSarang Website 2.免费版下载&#xff1a;家庭/学校免费 - NetSarang Website (xshell.com) 3.https://cdn.netsarang.net/de06d10…...

基于微服务+Java+Spring Cloud +UniApp +MySql开发的智慧工地源码(物联网、人工智能、AI识别、危大工程)

智慧工地系统利用物联网、人工智能、云计算、大数据、移动互联网等新一代信息技术&#xff0c;通过工地中台、三维建模服务、视频AI分析服务等技术支撑&#xff0c;实现智慧工地高精度动态仿真&#xff0c;趋势分析、预测、模拟&#xff0c;建设智能化、标准化的智慧工地综合业…...

Kafka安装与使用

Kafka是一种高吞吐量的分布式发布订阅消息系统&#xff0c;因为其高吞吐量、分布式可扩展性等等强大功能使得在目前互联网系统中广泛使用。该篇博客入门了解一下Kafka的安装及使用。 Kafka概念 Kafk是分布式消息队列。Kafka对消息保存时根据Topic进行归类&#xff0c;发送消息…...

php出现SSL certificate problem: unable to get local issuer certificate的解决办法

当在本地使用curl或者一些其它封装好的http类库或组件&#xff08;如php界 知名的 http客户端 Guzzle&#xff09;需要访问https时&#xff0c;如果本地没有配置证书&#xff0c;会出现SSL certificate problem: unable to get local issuer certificate的报错信息。 解决办法一…...

Flask狼书笔记 | 07_留言板

文章目录 7 留言板7.1 使用包组织代码7.2 Web开发流程7.3 使用Bootstrap-Flask7.4 Flask-Moment本地化日期和时间7.5 使用Faker生成虚拟数据7.6 Flask_DebugToolbar调试程序7.7 Flask配置的两种组织形式小结 7 留言板 这是一个简单的程序&#xff0c;涉及到的大部分是之前所学…...

文件导入之Validation校验List对象数组

背景&#xff1a; 我们的接口是一个List对象&#xff0c;对象里面的数据基本都有一些基础数据校验的注解&#xff0c;我们怎么样才能校验这些基础规则呢&#xff1f; 我们在导入excel文件进行数据录入的时候&#xff0c;数据录入也有基础的校验规则&#xff0c;这个时候我们又…...

【Linux】文件系统

磁盘及文件系统 文件的增删查改 重新认识目录 目录是文件嘛&#xff1f; 是的。 目录有iNode嘛&#xff1f; 有 目录有内容嘛&#xff1f; 有 任何一个文件&#xff0c;一定在一个目录内部&#xff0c;所以一个目录的内容是什么&#xff1f; 需要数据块&#xff0c;目录的数据…...

1.5 空间中的平面与直线

空间中的平面和直线 知识点1 平面方程 1.平面的法向量与法式 定义1 若向量n 垂直与平面N&#xff0c;则称向量n为平面N的法向量。 设一平面通过一直点 M 0 ( x 0 , y 0 , z 0 ) M_0(x_0,y_0,z_0) M0​(x0​,y0​,z0​)求垂直于非零向量 n ⃗ \vec{n} n (A,B,C),求改平面N的…...

【深度学习】实验06 使用TensorFlow完成线性回归

文章目录 使用TensorFlow完成线性回归1. 导入TensorFlow库2. 构造数据集3. 定义基本模型4. 训练模型5. 线性回归图 附&#xff1a;系列文章 使用TensorFlow完成线性回归 TensorFlow是由Google开发的一个开源的机器学习框架。它可以让开发者更加轻松地构建和训练深度学习模型&a…...

2023国赛 C题论文 蔬菜类商品自动定价与补货策略

因为一些不可抗力&#xff0c;下面仅展示小部分论文&#xff0c;其余看文末 一、问题重述 在生鲜超市管理领域&#xff0c;涉及一系列复杂问题&#xff0c;包括供应链管理、定价策略以及市场需求分析等方面。以蔬菜类商品为案例&#xff0c;这些商品在生鲜商超中具有较短的保…...

使用 【jacoco】对基于 SpringBoot 和 Dubbo RPC 的项目生成测试覆盖率报告:实践+原理

基于 Dubbo RPC 的项目中有一个提供者项目backend、一个消费者项目gateway、以及注册中心nacos。本篇文章记录在windows本地对该框架的测试过程&#xff0c;以及介绍jacoco的基本原理 测试过程 官网下载安装包解压到本地&#xff0c;https://www.jacoco.org/jacoco/ 只需要用…...

Mac OS合集

MacOS 10.15os 提取码:u12a 如不能点击跳转请复制此链接到浏览器&#xff1a;https://pan.baidu.com/s/1UgPNYprBgJrc25v5ushWxQ?pwdu12a MacOS 11.0 提取码:y77y 如不能点击跳转请复制此链接到浏览器打开&#xff1a;https://pan.baidu.com/s/1srmibmCi2T7UVGvHkCzGKA?pwdy7…...

算法之位运算

前言 位运算在我们的学习中占有很重要的地位&#xff0c;从二进制中数的存储等都需要我们进行位运算 一、位运算复习 1.位运算复习 按位与(&)&#xff1a;如果两个相应的二进制位都为1&#xff0c;则该位的结果值才为1&#xff0c;否则为0 按位或( | )&#xff1a;如果…...

flask使用Flask-Mail实现邮件发送

Flask-Mail可以实现邮件的发送&#xff0c;并且可以和 Flask 集成&#xff0c;让我们更方便地实现此功能。 1、安装 使用pip安装&#xff1a; $ pip install Flask-Mail或下载源码安装&#xff1a; $ git clone https://github.com/mattupstate/flask-mail.git $ cd flask-…...

React refers to UMD global, but the current file is a module vite初始化react项目

vite搭建react项目 初始化项目 npm create vite 在执行完上面的命令后&#xff0c;npm 首先会自动下载create-vite这个第三方包&#xff0c;然后执行这个包中的项目初始化逻辑。输入项目名称之后按下回车&#xff0c;此时需要选择构建的前端框架&#xff1a; ✔ Project na…...

vscode 调试 ROS2

1、在下列目录同层级找到.vscode文件夹 . ├── build ├── install ├── log └── src 2、 安装ros插件 3、创建tasks.json文件&#xff0c;添加下列内容 //代替命令行进行编译 {"version": "2.0.0","tasks": [{"label": &…...

TuyaOS开发学习笔记(2)——NB-IoT开发SDK架构、运行流程

一、SDK架构 1.1 架构框图 基于 TuyaOS 系统&#xff0c;可以裁剪得到的适用于 NB-IoT 协议产品接入的 SDK。SDK 将设备配网、上下行数据通信、产测授权、固件 OTA 升级等接口进行封装&#xff0c;并提供相关函数。 1.2 目录结构 1.2.1 TuyaOS目录说明 adapter&#xff1a;T…...

Qt应用开发(基础篇)——普通按钮类 QPushButton QCommandLinkButton

一、前言 QPushButton类继承于QAbstractButton&#xff0c;是一个命令按钮的小部件。 按钮基类 QAbstractButton 按钮或者命令按钮是所有图形界面框架最常见的部件&#xff0c;当按下按钮的时候触发命令、执行某些操作或者回答一个问题&#xff0c;典型的按钮有OK&#xff0c;A…...

Data Structures Fan(cf)

考察异或运算以及前缀和 题意大概&#xff1a;给你一个长度为n的a数组&#xff0c;一个长度为n的01字符串&#xff0c;会询问q次 当x的值为1 给出 l r 将 l r 区间中的0 改变为1&#xff0c;1改变为0 。当x的值为2是 若随后的数为0 则输出当前字符串中 是0 的a数组中的数异或 …...

BIOS < UEFI

Basic Input Output System &#xff08;BIOS&#xff09; Unified Extensible Firmware Interface &#xff08;UEFI&#xff09;...

微信最新更新隐私策略(2023-08-15)

1、manifest.json 配置修改 在mp-weixin: 参数修改&#xff08;没有就添加&#xff09; "__usePrivacyCheck__": true, ***2、注意 微信开发者工具调整 不然一直报错 找不到 getPrivacySetting 废话不多说 上代码 3、 编辑首页 或者用户授权界面 <uni-popup…...

外包加工网上的活靠谱吗/seo免费培训教程

hcnp三本书Several friends asked me what books I have been reading. I have decided to start a new series sharing the top three books I found useful and insightful on each topic that I am interested in.有几个朋友问我在读什么书。 我决定开始一个新系列&#xff…...

房产网系统/阜阳seo

对象的自动清除 对象回收是由垃圾回收线程负责System.gc()方法可以要求系统进行垃圾回收&#xff0c;仅仅是建议系统java没有“析构方法”&#xff0c;但Object的finalize()有类似方法系统在回收时会自动调用对象的finalize()方法protected void finalize() throws Throwable{}…...

赣州网站seo/南京seo优化

https://download.csdn.net/download/weixin_57836618/72364964...

做彩页素材的网站/百度seo排名主要看啥

1.树的基本概念 树是一种重要的非线性结构&#xff0c;他是由n个节点组成的有限集合&#xff08;n>0&#xff09; n0时&#xff0c;称为空树&#xff0c;树的顶端节点称为树的根&#xff0c;其余节点可分为若干个互不相交的子集&#xff0c;每个子集本身又是一棵树&#xff…...

wordpress 微信会员系统/网络推广的公司更可靠

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼专业课考研&#xff0c;我个人认为主要还是考察基本的概念&#xff0c;以教材为主&#xff0c;教材就是圣经。不可否认&#xff0c;教材是枯燥的&#xff0c;尤其像数据结构这样的课程&#xff0c;比较抽象&#xff0c;就算对于那些…...

做地图的网站/站长工具收录

os模块主要用于运行系统命令import osos.remname(file.txt,file1.txt) 文件重命名os.remove(file1.txt) 删除文件os.mkdir(test) 创建文件夹os.rmdir(test) 删除文件夹os.sep 可以取代操作系统特定的路径分割符os.getcwd() 相当于Linux下的pwd&#xff0c;获取当前目录os.chdir…...