MySQL数据库,聚合查询

news2024/12/23 18:25:46

目录

1、聚合查询

1.1聚合函数

1.1.1count函数

1.1.2sum函数

1.1.3avg函数

1.1.4max函数

1.1.5min函数

1.2group by子句

1.3having

1、聚合查询

1.1聚合函数

聚合函数查询又叫函数查询,它是通过一些特定的函数根据需求来查询相关的信息,常见的聚合函数为:

  • COUNT - 求总数,不包含某字段为null值
  • SUM - 求和,不包含某字段为null值
  • AVG - 求平均值,不包含某字段为null值
  • MAX - 求最大值,适用于数值、日期、字符串类型,不包含某字段为null值
  • MIN - 求最小值,适用于数值、日期、字符串类型,不包含某字段为null值

聚合函数的使用是在select语句中实现的,因此它的语法为:select 聚合函数(字段) from 表名;


首先我们创建一个名为test的数据库:

//创建一个名为test的数据库
mysql> create database test charset utf8;
Query OK, 1 row affected (0.00 sec)

//使用test数据库
mysql> use test;
Database changed

创建数据库后,我们得通过use指令来使用这个数据库,这样我们在创建表和对表进行操作时数据的来源都是在这个数据库中。


创建一个名为score的课程表: 

//创建一个课程表score
mysql> create table score(
    -> id int,
    -> name varchar(20),
    -> chinese int,
    -> math int,
    -> english int);
Query OK, 0 rows affected (0.02 sec)

//插入四行数据
mysql> insert into score(id,name,chinese,math,english) values
    -> (1,'张三',77,89,56),
    -> (2,'李四',85,98,32),
    -> (3,'王五',67,75,64),
    -> (4,'赵六',98,93,88);
Query OK, 4 rows affected (0.00 sec)
Records: 4  Duplicates: 0  Warnings: 0

此时score表的内容为:

在创建好表后,下面我们就来看这些聚合函数在查询这张表中数据的具体的效果是什么样的,并且展示给大家。


1.1.1count函数

count函数我们不难理解,它是用来计数的一个函数。通常用来记录一个表中的某字段出现的次数。如使用count函数通过id计算总人数:

mysql> select count(id) from score;
+-----------+
| count(id) |
+-----------+
|         4 |
+-----------+
1 row in set (0.01 sec)

通过上述代码,我们可以看到通过count这个函数可以计算到了score表中id字段的总数。注意这里的总数是字段总个数,如果某一行为null则不列入计数总数当中。


1.1.2sum函数

sum函数,是用来计算总和的函数。如使用sum函数计算score表中chinese成绩的总数:

mysql> select sum(chinese) from score;
+--------------+
| sum(chinese) |
+--------------+
|          327 |
+--------------+
1 row in set (0.00 sec)

我们可以看到,使用sum函数可以很好的求道某一个字段的总和。当然在函数的后面也可以加上别名,如给sum(chinese)起别名位total:

mysql> select sum(chinese) as total from score;
+-------+
| total |
+-------+
|   327 |
+-------+
1 row in set (0.00 sec)

通过上述代码我们可以知道,聚合函数的后面是可以起别名的,起别名是通过as这个关键字来起的。其中as可以省略,但建议加上该关键字这样代码的可读性较高一些。


1.1.3avg函数

avg函数是用来求某一字段的平均值,如使用avg函数求english的平均值:

mysql> select avg(english) from score;
+--------------+
| avg(english) |
+--------------+
|      60.0000 |
+--------------+
1 row in set (0.00 sec)

通过上述代码我们可以看到,avg得到的结果默认保留了4位小数,那我们想要avg保留相应的小数可以这样做:

mysql> select round(avg(english),2) as avg from score;
+-------+
| avg   |
+-------+
| 60.00 |
+-------+
1 row in set (0.00 sec)

使用round函数,使得avg的结果保留相应的小数位。在上述程序中,我保留的是2位小数,大家可以根据需求自行设计。


1.1.4max函数

max函数是求得的是某一字段的最大值,如使用max函数求得math成绩的最大值:

mysql> select max(math) from score;
+-----------+
| max(math) |
+-----------+
|        98 |
+-----------+
1 row in set (0.00 sec)

我们可以看到,math字段的最大值98被查询出来了,max函数的用法也是很简单。


1.1.5min函数

通过上方讲解我们知道了max函数是求最大值的,那么min函数是求得某一字段的最小值,如使用min函数求得english成绩的最小值:

mysql> select min(english) from score;
+--------------+
| min(english) |
+--------------+
|           32 |
+--------------+
1 row in set (0.00 sec)

通过上述代码可以看到,english字段的最小值32被查找出来了,min函数的使用方法也是比较的简单。详细的聚合函数在此篇博文中有介绍:数据处理函数。


1.2group by子句

在select中我们可以使用group by这个子句来对某一列来进行分组查询,同时在使用group by进行分组查询时,select指定的字段必需是分组依据字段进行查询的。它的语法为:select 字段 from 表名 group by 字段;

查询score表中的id,name,math信息,通过id进行分组查询:

mysql> select id,name,math from score group by id;
+------+------+------+
| id   | name | math |
+------+------+------+
|    1 | 张三 |   89 |
|    2 | 李四 |   98 |
|    3 | 王五 |   75 |
|    4 | 赵六 |   93 |
+------+------+------+
4 rows in set (0.00 sec)

 我们可以发现上述的信息是按照id的升序进行排列的,当然这和我们默认的定义的一样的。如果我们想要进行降序排序,我们可以在group by 字段后面加上一个desc来达到降序排序效果:

mysql> select id,name,math from score group by id desc;
+------+------+------+
| id   | name | math |
+------+------+------+
|    4 | 赵六 |   93 |
|    3 | 王五 |   75 |
|    2 | 李四 |   98 |
|    1 | 张三 |   89 |
+------+------+------+
4 rows in set, 1 warning (0.00 sec)

1.3having

在进行group by子句进行分组后,需要对分组结果再进行条件过滤时,不得使用where语句只能使用having。它的用法为:group by 字段 having 条件;

如按照id升序查询数学成绩在80分以上的同学:

mysql> select id,name,math from score group by id having math > 80;
+------+------+------+
| id   | name | math |
+------+------+------+
|    1 | 张三 |   89 |
|    2 | 李四 |   98 |
|    4 | 赵六 |   93 |
+------+------+------+
3 rows in set (0.00 sec)

 通过上述代码我们可以看到,数学成绩为75的王五同学被过滤掉了。

mysql> select id,name,math from score group by id where math > 80;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where math > 80' at line 1

 当我们使用where条件进行判断时就会出现报错。


本期博文到这里结束了,内容比较简单,大家可以下来了可以自行测试一下这些函数。感谢你的阅读,我们下期再见。

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

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

相关文章

代码随想录|day52| 动态规划part13● 300.最长递增子序列 ● 674. 最长连续递增序列 ● 718. 最长重复子数组

300 最长递增子序列 链接&#xff1a;力扣 看了思路之后写的代码&#xff0c;不知道为什么报错了。 错误一&#xff1a; int nnums.size();vector<int>dp(n,0);dp[0]1;for(int i1;i<n;i){for(int j0;j<i;j){if(nums[i]>nums[j]){dp[i]max(dp[i],dp[j]1);}}}retu…

Java版本企业电子招投标采购系统源代码——功能模块功能描述+数字化采购管理 采购招投标

​ 功能模块&#xff1a; 待办消息&#xff0c;招标公告&#xff0c;中标公告&#xff0c;信息发布 描述&#xff1a; 全过程数字化采购管理&#xff0c;打造从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通供应商门户具备内外协同的能力&#xff0c;为外…

ChatGPT 聊天接口API 使用

一、准备工作 1.准备 OPENAI_ACCESS_TOKEN 2.准备好PostMan 软件 二、测试交流Demo 本次使用POSTMAN工具进行快速测试&#xff0c;旨在通过ChatGPT API实现有效的上下文流。在测试过程中&#xff0c;我们发现了三个问题&#xff1a;    1.如果您想要进行具有上下文的交流&…

【prettier Error resolving prettier configuration for x:\xxx\.prettierrc.js】

Prettier Error resolving prettier configuration for x:\xxx.prettierrc.js 解决方法 Prettier 出现如下错误 错误 内容内联代码片 Error resolving prettier configuration for d:\map\user_package\Leaflet.FileLayer-master\.prettierrc.js ["ERROR" - 10:38…

Facebook、Google、亚马逊,谁将成为跨境电商的营销宠儿?

跨境电商在全球范围内的发展日益迅猛&#xff0c;而营销渠道的选择也变得越来越多样化。在众多的广告平台中&#xff0c;Facebook、Google和亚马逊被公认为是跨境电商卖家们最主要的营销平台。那么&#xff0c;这三个平台中哪个会成为跨境电商的营销宠儿呢&#xff1f; 一、Fac…

自动驾驶——智能底盘构造详解及新发展

摘要&#xff1a; 汽车底盘是指汽车上由传动系统、行驶系统、转向系统和制动系统等部分的组合&#xff0c;其功能包括支承、安装汽车车身、发动机及其它各部件及总成&#xff0c;形成汽车的整体造型&#xff0c;承受发动机动力&#xff0c;保证车辆正常行驶等。 底盘构造介绍 …

摄像头/视频读取_写入

摄像头/视频读取_写入 ➢VideoCapture类: 使用 OpenCV 播放视频&#xff0c;几乎与使用它来显示图像一样容易。播放视频时只需要处理的新问题就是如何循环地顺序读取视频中的每一顿&#xff0c;以及如何从枯燥的电影视频的读取中退出该循环操作。具体如例如下&#xff1a; #…

【计算机架构】如何计算 CPU 动态功耗

&#x1f4dc; 本章目录&#xff1a; 0x00 动态功耗&#xff08;Dynamic Power&#xff09; 0x01 集成电路成本&#xff08;Integrated Circuit Cost&#xff09; 0x02 基准测试&#xff08;SPEC CPU Benchmark&#xff09; 0x03 SPEC功率基准测试&#xff08;SPEC Power B…

vs2022下配置zxing cpp环境

生成zxing 下载zxing&#xff0c;zxing-cpp-master https://github.com/zxing-cpp/zxing-cpp Cmake生成项目&#xff0c;点Generate&#xff0c;把OpenCV_DIR修改了&#xff0c;NameValue没有报红就点Generate。然后点Open Project打开项目。 打开项目后&#xff0c;右击解决…

赋值法写基础解系中解向量

赋值法写基础解系中解向量 &#xff08;一&#xff09;背景引入 通常解方程组时&#xff0c;将系数矩阵化为行阶梯型&#xff0c;进而可化为行最简型 &#xff08;说一嘴&#xff1a;行最简型是指阶梯口元素全是1&#xff0c;该1所在列全其余全为0&#xff1b;广义行阶梯的阶梯…

maven作用讲解---以及怎么配置阿里的maven镜像

目录 Maven介绍 传统的java项目的结构和maven的对比 传统 Maven的项目 如何配置阿里 maven 2. 修改 Maven介绍 传统的java项目的结构和maven的对比 传统 Maven的项目 如何配置阿里 maven (1) 把 D:\program\JavaIDEA 2020.2\plugins\maven\lib\maven3\conf\settings.xml…

DNS服务

DNS服务 使用背景 在日常生活中人们习惯使用域名访问服务器&#xff0c;但机器间互相只认IP地址&#xff0c;域名与IP地址之间是多对一的关系&#xff0c;一个ip地址不一定只对应一个域名&#xff0c;且一个完整域名只可以对应一个ip地址&#xff0c;它们之间的转换工作称为域…

锐捷常用命令

所有交换机和无线控制器开启SSH服务&#xff0c;用户名密码分别为admin、admin1234&#xff1b;密码为明文类型,特权密码为admin 以S5为例&#xff1a; S5(config)#enable service ssh-server S5(config)#username admin password admin123 S5(config)#line vty 0 4 S5(co…

【C++ 十】STL基本概念、STL六大组件、STL容器、STL算法、STL迭代器

STL 的诞生、STL 基本概念、STL 六大组件、STL 容器、STL 算法、STL 迭代器 文章目录 STL 的诞生、STL 基本概念、STL 六大组件、STL 容器、STL 算法、STL 迭代器前言1 STL 的诞生2 STL 基本概念3 STL 六大组件4 STL 中容器、算法、迭代器5 容器算法迭代器初识5.1 vector 存放内…

vue2数据响应式原理(4) 递归侦测对象所有属性,解密vue响应式对象__ob__是干什么的

我们上文写的这个方法 并不能很好的侦测对象所有的属性 或者说 不能比较简介的侦测所有属性 在实际业务中 对象里面套对象 也不是什么很少见的事 例如这样 这种 我们用上一种方法 就很麻烦了 所以 我们需要了解新的方法 要完成完整的属性监听 我们就需要一个工具类 这个类的…

js+css实现简单的弹框动画

效果图 只是一个简单的演示demo&#xff0c;但是可以后面可以优化样式啥的 刚开始元素的display为none&#xff0c;然后&#xff0c;为了给元素展示时添加一个动画&#xff0c;首先要添加样式类名show&#xff0c;让它覆盖display:none&#xff0c;变得可见。然后&#xff0c;添…

Day951.认知负载 -遗留系统现代化实战

认知负载 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于认知负载的内容。 一、怎样理解认知负载&#xff1f; 作为开发人员&#xff0c;不管是不是工作在遗留系统上&#xff0c;一定面临过来自业务方或项目经理的灵魂拷问&#xff1a; 为什么这个需求这么简单&…

车载网络 - Autosar网络管理 - 跳转状态

四、Autosar网络管理跳转状态 网络模式对应报文状态 Autosar网络管理报文各个状态对应的网络管理报文和应用报文的发送和接收状态。 网络模式 网络管理报文 应用报文 收发类型 发送报文 接收报文 发送报文 接收报文 总线睡眠模式(BSM) No Yes No NA 准备总线睡眠模…

探索Whisper语音识别

问题一&#xff1a;python多版本切换 背景&#xff1a;有了anaconda环境 还有一个c盘的不知道什么东西 我准备下载一个python3.9.9 去官网 然后安装&#xff0c;安装之前一定要把原来的python卸载干净。 3.9.9安装不上&#xff0c;我用3.10 切换的话&#xff0c;就是去环境…

总结828

学习目标&#xff1a; 4月&#xff08;复习完高数18讲内容&#xff0c;背诵21篇短文&#xff0c;熟词僻义300词基础词&#xff09; 学习内容&#xff1a; 暴力英语&#xff1a;回环诵读之前的文章&#xff0c;背150个单词&#xff0c;背《冰与火之歌》-守夜人誓词 高等数学&…