MySQL表聚合函数

news2024/10/6 18:34:34

前言

        哈喽,各位小伙伴大家好,本篇文章为大家介绍几个MySQL中常用的聚合函数,什么是聚合函数,相信第一次看到这个名词的小伙伴是比较懵的,举个例子,比如说统计表中数据的个数,就可以使用MySQL中提供的函数COUNT进行统计,下面我们就具体来看看都有哪些聚合函数,以及如何使用聚合函数。

1.聚合函数

首先整体认识一下都有哪些聚合函数,然后再结合具体的案例对每一种聚合函数进行学习:

案例:

1.统计班级共有多少同学

-- 使用 * 做统计,不受 NULL 影响

mysql> select* from student;
+----+--------+----+---------+
| id | name   | sn | qq      |
+----+--------+----+---------+
|  1 | 张三   |  1 | 123456  |
|  2 | 李四   |  2 | 1234578 |
|  3 | 王五   |  3 | 234567  |
|  5 | 张飞   |  6 | 2467764 |
|  6 | 刘备   |  4 | NULL    |
+----+--------+----+---------+
5 rows in set (0.00 sec)
mysql> select count(*) from student;
+----------+
| count(*) |
+----------+
|        5 |
+----------+
1 row in set (0.01 sec)
-- 使用表达式做统计
mysql> select count(1) from student;
+----------+
| count(1) |
+----------+
|        5 |
+----------+
1 row in set (0.00 sec)

2.统计班级收集的 qq 号有多少

-- NULL 不会计入结果
mysql> select count(qq) from student;
+-----------+
| count(qq) |
+-----------+
|         4 |
+-----------+
1 row in set (0.00 sec)

3.统计本次考试的数学成绩分数个数

mysql> select* from exam_result;
+----+-----------+---------+------+---------+
| id | name      | chinese | math | english |
+----+-----------+---------+------+---------+
|  8 | 唐三藏    |      67 |   98 |      56 |
|  9 | 孙悟空    |      87 |   78 |      77 |
| 10 | 猪悟能    |      88 |   98 |      90 |
| 11 | 曹孟德    |      82 |   84 |      67 |
| 12 | 刘玄德    |      55 |   85 |      45 |
| 13 | 孙权      |      70 |   73 |      78 |
| 14 | 宋公明    |      75 |   65 |      30 |
+----+-----------+---------+------+---------+
--count(math)统计的是全部的成绩
mysql> select count(math) from exam_result;
+-------------+
| count(math) |
+-------------+
|           7 |
+-------------+
1 row in set (0.00 sec)
--count(distinct math)统计的是去重的成绩
mysql> select count(distinct math) from exam_result;
+----------------------+
| count(distinct math) |
+----------------------+
|                    6 |
+----------------------+
1 row in set (0.00 sec)

4.统计数学成绩总分

mysql> select sum(math) from exam_result;
+-----------+
| sum(math) |
+-----------+
|       581 |
+-----------+
1 row in set (0.00 sec)

5.统计平均分

mysql> select avg(math+english+chinese) 平均总分 from exam_result;
+--------------------+
| 平均总分           |
+--------------------+
| 221.14285714285714 |
+--------------------+
1 row in set (0.00 sec)

6.返回英语最高分

mysql> select max(english) from exam_result;
+--------------+
| max(english) |
+--------------+
|           90 |
+--------------+
1 row in set (0.01 sec)

7.返回 > 70 分以上的数学最低分


mysql> select min(math) from exam_result where math > 70;
+-----------+
| min(math) |
+-----------+
|        73 |
+-----------+
1 row in set (0.00 sec)

2.分组统计

上面介绍了聚合函数的相关使用,为什么这里突然出现了一个分组统计,可能会有小伙伴感到很奇怪,不要担心,下面我们来认识一下什么是分组统计。 

分组统计的目的是为了实现聚合函数的使用,所以说分组是手段,最终目的是为了实现聚合统计,可能这样说大家还是理解起来不太直观,下面我们通过实际的案例进行说明:

这里有三张表:

EMP员工表
DEPT部门表
SALGRADE工资等级表

emp表:

 dept表:

salgrade表:

 

通过第一张表可以观察出,表中有许多员工的信息,每个员工都具有不同信息,但是有几个员工具有相同的信息,就是员工的部门编号:

此时有一个需求:显示每个部门的平均工资和最后工资

如果直接使用聚合函数进行统计的就会发现实现不了上述的需求,此时就需要先进行分组,然后再使用相应的聚合函数统计,这也就是上面所说的分组是手段,而真正的目的是为了实现聚合统计。

下面我们就具体来看看如何进行分组统计:

语法:

select column1, column2, .. from table group by column;

案例:

显示每个部门的平均工资和最高工资:

mysql> select deptno,max(sal) 最高,avg(sal) 平均 from emp group by deptno;
+--------+---------+-------------+
| deptno | 最高    | 平均        |
+--------+---------+-------------+
|     10 | 5000.00 | 2916.666667 |
|     20 | 3000.00 | 2175.000000 |
|     30 | 2850.00 | 1566.666667 |
+--------+---------+-------------+
3 rows in set (0.00 sec)

显示每个部门的每种岗位的平均工资和最低工资:

mysql> select deptno,job,avg(sal) 平均,min(sal) 最低 from emp group by deptno,job;
+--------+-----------+-------------+---------+
| deptno | job       | 平均        | 最低    |
+--------+-----------+-------------+---------+
|     10 | CLERK     | 1300.000000 | 1300.00 |
|     10 | MANAGER   | 2450.000000 | 2450.00 |
|     10 | PRESIDENT | 5000.000000 | 5000.00 |
|     20 | ANALYST   | 3000.000000 | 3000.00 |
|     20 | CLERK     |  950.000000 |  800.00 |
|     20 | MANAGER   | 2975.000000 | 2975.00 |
|     30 | CLERK     |  950.000000 |  950.00 |
|     30 | MANAGER   | 2850.000000 | 2850.00 |
|     30 | SALESMAN  | 1400.000000 | 1250.00 |
+--------+-----------+-------------+---------+
9 rows in set (0.00 sec)

显示平均工资低于2000的部门和它的平均工资:

实现思路:

a.统计每个部门的平均工资:

mysql> select deptno,avg(sal) 平均工资 from emp group by deptno;
+--------+--------------+
| deptno | 平均工资     |
+--------+--------------+
|     10 |  2916.666667 |
|     20 |  2175.000000 |
|     30 |  1566.666667 |
+--------+--------------+
3 rows in set (0.00 sec)

b.对结果进行过滤:

having和group by配合使用,对group by结果进行过滤

mysql> select deptno,avg(sal) 平均工资 from emp group by deptno having 平均工资 < 2000;
+--------+--------------+
| deptno | 平均工资     |
+--------+--------------+
|     30 |  1566.666667 |
+--------+--------------+
1 row in set (0.00 sec)

--having经常和group by搭配使用,作用是对分组进行筛选,作用像where。

总结

        本篇文章为大家介绍了什么是聚合函数,聚合函数如何使用以及分组统计,了解了这些使用规则之后,能够在以后对MySQL表数据操作的时候更加便捷和快速。

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

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

相关文章

软件测试技术分享丨支付测试

支付测试 引言&#xff1a;如今&#xff0c;随着非现金支付手段的不断推广和应用&#xff0c;“非现金社会”正在形成。非现金支付已成为日常生活中不可或缺的伙伴。那么&#xff0c;对于互联网产品来说&#xff0c;支付也是涉及到公司收入的一个重大环节。对于我们测试人员&am…

JavaScript 处理字符串数组数据方法

前端三件套中 JavaScript 就是充电处理业务逻辑的一个角色&#xff0c;在很多情况之下&#xff0c;或像在做项目之中去发起一些数据请求之后待服务器响应回馈给到客户端的时候&#xff0c;对于返回的数据需要进行一个格式的处理&#xff0c;比如有JSON&#xff0c;字符串&#…

Python 集合探索:解密高效数据操作和快速算法的奇妙世界

前言 在 Python 的众多数据结构中&#xff0c;集合&#xff08;Sets&#xff09;是一个引人注目且实用的概念。集合提供了一种存储无顺序、唯一元素的数据结构&#xff0c;它们不仅可以帮助我们高效处理数据&#xff0c;还能应用于各种算法和问题。 本博客将带您踏上一段关于…

python 从一个文件夹里面复制 符合要求的文件

记事本格式 import os def copy(src_file, dst_file):import shutil# 执行复制操作shutil.copy2(src_file, dst_file)def main(parent,data,dest_path):_list []for line in open(data, encoding"utf-8"):line line.strip()_list.append(line.split("\t&quo…

渠道归因(二)基于马尔可夫链的渠道归因

渠道归因&#xff08;二&#xff09;基于马尔可夫链的渠道归因 在应用当中&#xff0c;序列中的每个点通常映射为一个广告触点&#xff0c;每个触点都有一定概率变成真正的转化。通过这种建模&#xff0c;可以选择最有效&#xff0c;概率最高的触点路径。这种方法需要较多的数…

你知道怎么通过ai绘画图片描述生成图片吗

汤姆: 嘿&#xff0c;听说了吗&#xff1f;有几个特别酷的方法可以通过ai绘画图片描述生成出上面这些惊艳的图像&#xff01; 玛丽: 真的吗&#xff1f;那听起来好神奇啊&#xff01;怎么做到的&#xff1f; 汤姆: 其实很简单&#xff01;你只需要用文字描述你想要的图片&…

POI批量导入和echars图表

下载模板 userList.jsp <a href"downloadUserExcel">下载模板</a>DownloadUserServlet.java /*** 下载*/ WebServlet("/downloadUserExcel") public class DownloadUserServlet extends HttpServlet {protected void doGet(HttpServletReq…

关于环肽试剂:118477-06-8,Cyclo(L-Phe-trans-4-hydroxy-L-Pro),知识普及

●中文名&#xff1a;环(L-苯丙氨酰-反式-4-羟基-L-脯氨酸) ●英文名&#xff1a;Cyclo(L-Phe-trans-4-hydroxy-L-Pro) 西安凯新生物科技有限公司供应的​各种环肽&#xff0c; 任何结构的环肽&#xff0c;可以进行相应的定制服务。环二肽&#xff1a; 2000/g or 3000/g 纯度…

idea 自带git down分支出现莫名其妙的文件

是个坑 大部分场景下&#xff0c;会先down master 再去down 对应分支 例如dev 会出现一种内容&#xff0c;master里面有但dev没有当前文件&#xff0c;直接报错而且引入包排查没任何问题 解决方式&#xff1a; 用tortoiseGit 直接选对应分支。idea目前2022不支持

uniapp - [全端兼容] 多选弹框选择器,弹框形式的列表多选选择器组件插件(底部弹框式列表多选功能,支持数据回显、动态数据、主题色等配置)

前言 网上的教程都太乱了,各种不兼容且 BUG 太多,注释也没有很难进行改造。 本文 实现了 uniapp 全端兼容的弹框多选选择器,从底部弹出列表项进行多选(可回显已选中和各种主题色、样式配置), 您可以直接复制代码,稍微改改样式就能用了。 如下图所示,数据列表(支持接口…

关于找不到msvcp120.dll,无法继续执行代码的解决方案

小伙伴们知道msvcp120.dll是什么文件吗?那么今天小编就来讲解电脑出现msvcp120.dll丢失的解决方法介绍&#xff0c;希望能够帮助到大家呢。 msvcp120.dll 是windows系统中必备的动态链接库文件。msvcp120.dll可以解决某些大型游戏、程序由于vs2010编译系统中缺失此dll的问题。…

【电子量产工具】大纲分析

前言 最近看了 电子量产工具 这个项目&#xff0c;本专栏是对该项目的一个总结。 项目大纲&#xff1a; 可以看到上面的框图&#xff0c;我们可以分为三大部分&#xff1a; 从最下面的 第 1 层开始。这是整个项目的最底层&#xff0c;主要负责处理数据和逻辑&#xff0c;与板…

Docker发布JAVA vhr微人事后端(确保打包没问题再发布)

本文代码来源于&#xff08;感谢作者&#xff09; GitHub - lenve/vhr: 微人事是一个前后端分离的人力资源管理系统&#xff0c;项目采用SpringBootVue开发。1.创建DockerFile文件 创建mail文件夹 创建web文件夹 以下为mail dockerfile FROM java:8 Add *.jar /app/app.ja…

算法chatgpt回答

算法 红黑树和AVL树区别 红黑树和AVL树区别

Windows系统提示丢失xlive.dll怎么办?

xlive.dll微软的动态链接库&#xff08;DLL&#xff09;的一部分&#xff0c;当它被删除或者损坏时&#xff0c;会出现错误消息&#xff0c;提示xlive.dll丢失或未找到。那么Windows系统提示丢失xlive.dll怎么办呢&#xff1f; Windows计算机丢失xlive.dll如何修复&#xff1f;…

云原生之深入解析Docker容器的核心Cgroups的相关概念和使用实现

一、Cgroups 简介 Cgroups 是 Linux 系统内核提供的一种机制&#xff0c;这种机制可以根据需求将一些列系统任务机器子任务整合或分离到按资源划分登记的不同组内&#xff0c;从而为系统资源管理提供一个的框架。简单地说&#xff0c;Cgroups 可以限制、记录任务组所使用的物理…

HCIP-Cloud Service Solutions Architect v3.0

华为职业认证hcip解决方案架构师v3.0 新增题库200题 HCIP-Cloud Service Solutions Architect v3.0 1.关于创建数据盘镜像的约束条件&#xff0c;以下说法错误的是&#xff1f; A.使用云服务器的数据盘创建数据盘镜像时&#xff0c;要确保该云服务器必须有系统盘 B.通过外部文件…

智能化新服务即将惊艳亮相HDC2023 ——华为云Astro爆发低代码能量

​​HDC期间可参与华为开发者大会Astro新人抽奖活动&#xff0c;活动链接在文末。福利多多&#xff0c;快来参与&#xff01; 跃跃欲试的开发者们&#xff0c;是否对2023华为云开发者大会充满期待&#xff1f;华为云Astro将引领新一轮低代码技术革命&#xff01;贯穿AIGC技术的…

HTML5 游戏开发实战 | 五子棋

五子棋是一种家喻户晓的棋类游戏&#xff0c;它的多变吸引了无数的玩家。本章首先实现单机五子棋游戏(两人轮流下)&#xff0c;而后改进为人机对战版。整个游戏棋盘格数为 1515&#xff0c;单击鼠标落子&#xff0c;黑子先落。在每次下棋子前&#xff0c;程序先判断该处有无棋子…

建安三类人企业主要负责人(A证)安全技术考试题库及答案

本题库是根据最新考试大纲要求&#xff0c;结合近年来考试真题的重难点进行汇编整理组成的全真模拟试题&#xff0c;考生们可以进行专项训练&#xff0c;查漏补缺巩固知识点。本题库对热点考题和重难点题目都进行了仔细的整理和编辑&#xff0c;相信考生在经过了针对性的刷题练…