【MySQL聚合查询】轻松实现数据统计

news2024/11/24 20:25:43

1、聚合查询

聚合查询:行和行之间的运算

1.1 聚合函数

常见的聚合函数:

  • count:数量

  • sum:求和

  • avg:求平均值

  • max:最大值

  • min:最小值

1.2 聚合函数的使用

1.2.1 count 函数

现在有一个 class 表:

现在我们就用 count 来统计 class 表中有多少个班级

-- select count(id) from class;
select count(*) from class;
+----------+
| count(*) |
+----------+
|        3 |
+----------+

1.2.2 sum 函数

现在有一个 score 表:

现在我们就用 sum函数来求 language 成绩的总和

select sum(language) from score;
+---------------+
| sum(language) |
+---------------+
|        283.50 |
+---------------+

1.2.3 avg 函数

现在有一个 score 表:

现在我们就用 avg函数来求 language 成绩的平均值

select avg(language) from score;
+---------------+
| avg(language) |
+---------------+
|     94.500000 |
+---------------+

1.2.4 max 函数

现在有一个 score 表:

现在我们就用 max 函数来求 language 成绩中的最大值

select max(language) from score;
+---------------+
| max(language) |
+---------------+
|         97.80 |
+---------------+

1.2.5 min 函数

现在有一个 score 表:

现在我们就用 min 函数来求 language 成绩中的最小值

select min(language) from score;
+---------------+
| min(language) |
+---------------+
|         89.50 |
+---------------+

1.3 group by 子句

1.3.1 group by 的使用

group by 可以对表中的行进行分组查询

不用group by 分组,相当于就只有一组,把所有的行进行聚合

引入 group by 就可以针对不同的组,来分别进行聚合

现在有一张 salarytable 工资表:

查询每个职位的平均工资:

select role,avg(salary) from salarytable group by role;
+--------+------------------+
| role   | avg(salary)      |
+--------+------------------+
| 服务员 |      6000.000000 |
| 程序猿 |     22500.000000 |
| 老板   | 110000000.000000 |
+--------+------------------+

如果不带聚合函数的普通查询,是否能用 group by 呢?

答:可以,但是查询出来的结果是每个分组的第一条记录

select * from salarytable group by role;
+----+------+--------+--------------+
| id | name | role   | salary       |
+----+------+--------+--------------+
|  5 | 赵六 | 服务员 |      6000.00 |
|  3 | 张三 | 程序猿 |     20000.00 |
|  1 | 马云 | 老板   | 100000000.00 |
+----+------+--------+--------------+

1.3.2 指定条件的分组查询

分组查询,可以指定条件,通常使用 where 和 having 进行指定条件

where 和 having 的区别:

  • 分组之前,指定条件。先筛选,再分组,使用 where

  • 分组之后,指定条件。先分组,再筛选,使用 having

注:在一条SQL语句中,分组之前和之后可以同时指定条件

1.分组之前,指定条件

select role,avg(salary) from salarytable where role !='程序猿' group by role;
+--------+------------------+
| role   | avg(salary)      |
+--------+------------------+
| 服务员 |      6000.000000 |
| 老板   | 110000000.000000 |
+--------+------------------+

画图分析:

2.分组之后,指定条件

select role,avg(salary) from salarytable group by role having role != '老板';
+--------+--------------+
| role   | avg(salary)  |
+--------+--------------+
| 服务员 |  6000.000000 |
| 程序猿 | 22500.000000 |
+--------+--------------+

画图分析:

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

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

相关文章

【Python每日一练】总目录(2023.2.18~5.18)共90篇

2023.2.18~2023.5.18 连载三个月共90篇,暂停更 Python 2023.05 2023.05.11-2023.05.18 20230518 20230517 1. 最大连续1的个数 I Max Consecutive Ones 🌟 2. 最大连续1的个数 II Max Consecutive Ones 🌟🌟 3. 最大连续1的个…

什么是K-近邻算法?

一、什么是K-近邻算法? K近邻算法(K-Nearest Neighbors,简称KNN)是一种基本的分类和回归算法。它的基本原理是通过测量样本之间的距离来对未知样本进行分类或预测。KNN算法被归类为一种“懒惰学习”(lazy learning&am…

【K8s】安全认证与DashBoard

文章目录 一、概述1、客户端2、认证、鉴权与准入控制 二、认证管理1、认证方式2、HTTPS证书认证 三、授权管理1、授权与RBAC2、Role 与 ClusterRole3、RoleBinding 与 ClusterRoleBinding4、案例:创建一个只能管理dev空间下Pods资源的账号 四、准入控制五、DashBoar…

【ARMv8 编程】A64 流控制指令

A64 指令集提供了许多不同种类的分支指令。对于简单的相对分支,即那些从当前地址偏移的分支,使用 B 指令。无条件简单相对分支可以从当前程序计数器位置向后或向前分支最多 128MB。 有条件的简单相对分支,其中条件代码附加到 B,具…

用Pin对二进制文件自动脱壳

Intel Pin Intel Pin在可执行二进制代码中插入一些探测函数,用于观察、记录、分析宿主代码执行过程中的一些与计算机体系结构相关的特性,如访存指令,寄存器内容,寄存器地址等,通过Pin提供的API可以编写各种分析函数,这样程序运行完以后,统计和分析结果也同时产生,分析…

solidworks2020及麦迪工具箱安装

1、麦迪工具箱安装 1)下载 下载链接:www.maidiyun.com/download 下载今日制造 2)安装 由于电脑上安装了杀毒软件,会直接删除解压后的安装包,因此需要关闭杀毒软件或者在被删除后进入杀毒软件的隔离区将该文件添加…

网站信息收集

网站信息收集 ip信息收集 域名Whois查询 - 站长之家 Whois查询 http://tool.chinaz.com/ 站长工具 https://dns.aizhan.com/ 爱站网 ping检测 ip反查域 https://x.threatbook.cn/ 微步在线 https://toolbar.netcraft.com/site_report 网站查询 http://tool.chinaz.com/n…

JECloud 运行前端模块所遇到的问题(持续学习汇总)

1.依赖安装问题 官网 JECLoud 前端打包部署 1.1 部署前 注意 可以先下载 jecloud-libs 项目 尝试 部署安装 node版本不能过高!选择node v14.17.5 版本 在部署前 如果当前node版本过高可以使用 nvm工具 切换到低版本, 但是需要注意的是 切换版本时 …

判断数组中各个元素是否为实数numpy.isreal()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 判断数组中各个元素是否为实数 numpy.isreal() 选择题 以下程序的运行结果是? import numpy as np anp.array([11j,2j,3.4,5]) print("【显示】a:");print(a) print("【执行】…

Java+Demo 使用java的URLConnection类下载网络文件和支持断网断点续传的简单应用

记录一下使用java的URLConnection类和File类下载网络文件和支持断网断点续传的简单方式 java URLConnection类的结构 demo代码假设下载python的安装包 https://www.python.org/ftp/python/3.10.8/python-3.10.8-amd64.exeFileDownloadUtilsDemo1.java package boot.example…

【ARMv8 编程】A64 系统控制和其他指令

A64 指令集包含与以下相关的指令: 异常处理。系统寄存器访问。调试。提示指令,在许多系统中都有电源管理应用程序。 一、异常处理指令 存在三个异常处理指令,其目的是引发异常。这些用于调用在操作系统(EL1)、Hyper…

004、PG实例结构

实例结构 1、PostgreSQL实例2、建立一个连接和创建一个会话3、初始化参数文件4、postgresql.conf参数文件5、postgresql.auto.conf参数文件6、参数生效条件7、Memory Architecture8、Process Architecture9、Postgres Server Process10、Backend Processes11、Background Proce…

Linux:split命令、paste命令、ecal命令和正则表达式

Linux:split命令、paste命令、ecal命令和正则表达式 一、split命令二、paste命令三、eval命令四、正则表达式五、实验与应用 一、split命令 split命令—Linux下将一个大的文件拆分成若干小文件语法格式 split 选项 参数 原始文件 拆分后文件名前缀常用选项 选项说…

Claude不能用了?我来帮你

前几天,我在《不需要等待列表,也不用魔法上网的Claude,能否比肩ChatGPT?》一文中,介绍了ChatGPT的同门师兄Claude的注册使用教程。许多同学按照我的教程,很快就无痛使用上了类似ChatGPT的服务。 403 Forbid…

WGCNA | 不止一个组的WGCNA怎么分析嘞!?~(二)(共识网络分析-第二步-构建网络与模块-分步法)

1写在前面 不知道各位最近过得怎么样,昨天去修了脚🦶,感觉自己马上就要迈入油腻中年人的行列了。🥲 不过说实话,还是挺舒服的,值得再去一次。😅 接着更一下WGCNA的教程吧,还是值得大…

TypeScript-基础类型

目录 介绍 布尔值 数字 字符串 数组 元组 Tuple 枚举 Unknown Any Void Null 和 Undefined Never Object 类型断言 关于 Number, String, Boolean, Symbol 和 Object 介绍 在TypeScript中,我们能够处理一些数据单元,例如:数字…

【JavaWeb】-- HTML、CSS、JavaScript

文章目录 HTML1.基本介绍2.快速入门3.基础标签3.1 标题标签3.2 hr标签3.3 字体标签3.4 加粗、斜体、下划线标签3.5 居中标签 4.图片、音频、视频标签5.超链接标签6.列表标签7.表格标签8.布局标签9.表单标签9.1 表单标签概述9.2 form标签属性9.3 代码演示 10.表单项标签 CSS1.概…

【Prompting】ChatGPT Prompt Engineering开发指南(5)

ChatGPT Prompt Engineering开发指南:Transforming 翻译通用翻译器音调转换格式转换拼写检查/语法检查内容来源 在本教程中,我们将探讨如何使用大型语言模型来进行文本转换任务,例如语言翻译,拼写和语法检查,音调调整和…

怎么画邻接表?不用邻接矩阵也能画?

目录 一、有向图的邻接表 二、无向图的邻接表 一、有向图的邻接表 最简单粗暴的方式就是把某个顶点发出的箭头指向的顶点全作为单个结点连接到此顶点的后面。结点数等于边数。 按正常思路的话,是一种递归遍历。 1.选一个点作为出发点。比如选一个v0。 2.从第一出…

Kali-linux控制Meterpreter

Meterpreter是Metasploit框架中的一个杀手锏,通常作为利用漏洞后的攻击载荷所使用,攻击载荷在触发漏洞后能够返回给用户一个控制通道。当使用Armitage、MSFCLI或MSFCONSOLE获取到目标系统上的一个Meterpreter连接时,用户必须使用Meterpreter传…