【MySQL — 数据库基础】深入解析MySQL的聚合查询



1. 聚合查询
1.1 聚合函数
| 函数 | 说明 |
|---|---|
| COUNT ( [DISTINCT] expr) | 返回查询到的数据的数量( 行数 ) |
| SUM ( [DISTINCT] expr) | 返回查询到的数据的总和,不是数字没有意义 |
| AVG ( [DISTINCT] expr) | 返回查询到的数据的平均值,不是数字没有意义 |
| MAX( [DISTINCT] expr) | 返回查询到的数据的最大值,不是数字没有意义 |
| MIN ( [DISTINCT] expr) | 返回查询到的数据的最小值,不是数字没有意义 |
注意: null 值在使用聚合函数时,大部分会被忽略掉 ;

【MySQL — 数据库增删改查操作】深入解析MySQL的 Retrieve 检索操作

1.2 COUNT 行数查询
功能:计算行数。可以计算所有行的数量,也可以根据条件计算某列非NULL值的数量。
语法:
SELECT COUNT(column_name) FROM table_name WHERE condition;

COUNT 使用案例
select count(*) from exam; +----------+
| count(*) |
+----------+
| 7 |
+----------+-- count() 用于查询 exam 的行数-- 先执行 select * from exam , 再根据上述的结果, 执行 countselect count(name) from exam; +-------------+
| count(name) |
+-------------+
| 7 |
+-------------+-- * 换成 name 效果相同select count (name) from exam;
ERROR 1630 (42000)-- count(name) 是连在一起的, 不能加空格-- 如果数据中包含了null , 可能对上述count产生影响insert into exam values(null ,'唐三藏', 67 , 98 , 56);--插入 id 列为 null 的第一列数据select count(*) from exam; +----------+
| count(*) |
+----------+
| 8 |
+----------+-- 使用 count(*) 不会影响结果select count(id) from exam;+-----------+
| count(id) |
+-----------+
| 7 |
+-----------+-- id 列有空值, 使用 count(列名) 对结果有影响
-- 其他列无空值, 使用 count(列名) 对结果无影响select count(distinct name) from exam; +----------------------+
| count(distinct name) |
+----------------------+
| 7 |
+----------------------+-- 对 name 进行去重查询
1.3 SUM 总和查询
功能:计算某列的总和。仅适用于数值类型的列。
语法
SELECT SUM(column_name) FROM table_name WHERE condition;

SUM 使用案例
select sum(English) from exam;
+--------------+
| sum(English) |
+--------------+
| 443.0 |
+--------------+
1 row in set (0.01 sec)-- 确保进行求和的列是数字select sum(name) from exam;
+-----------+
| sum(name) |
+-----------+
| 0 |
+-----------+
1 row in set, 7 warnings (0.00 sec)-- 对 name 求和,虽然不会报错,但是会根据求和列数给出警告show warnings;
+---------+------+-----------------------------------------------+
| Level | Code | Message |
+---------+------+-----------------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: '唐三藏' |
| Warning | 1292 | Truncated incorrect DOUBLE value: '孙悟空' |
| Warning | 1292 | Truncated incorrect DOUBLE value: '猪悟能' |
| Warning | 1292 | Truncated incorrect DOUBLE value: '曹孟德' |
| Warning | 1292 | Truncated incorrect DOUBLE value: '刘玄德' |
| Warning | 1292 | Truncated incorrect DOUBLE value: '孙权' |
| Warning | 1292 | Truncated incorrect DOUBLE value: '宋公明' |
+---------+------+-----------------------------------------------+
7 rows in set (0.00 sec)-- 数据库在进行求和时,会把求和的列的值尝试转换成 double-- 如果字符串前半部分是数字,就能把前半部分 Truncated , 并且转换成 double-- 原则上不应该针对字符串进行求和操作,即使字符串有数字,也不一定可以进行算术运算-- null 和任意数值进行计算,结果都为 null ,但是 sum 比较特殊,遇到 null 直接跳过-- 如果有同学缺考,sum 的机制就不会让 null 参与运算,导致总成绩也为 nullselect sum(Chinese + Math + English ) from exam;
+--------------------------------+
| sum(Chinese + Math + English ) |
+--------------------------------+
| 1548.0 |
+--------------------------------+
1 row in set (0.00 sec)-- sum 可以针对多列中所有的数字进行求和,也可以在求和后面添加筛选条件
1.4 AVG 平均数查询
功能:计算某列的平均值。仅适用于数值类型的列。
语法
SELECT AVG(column_name) FROM table_name WHERE condition;

AVG 使用案例
select avg(Chinese) from exam;
+--------------+
| avg(Chinese) |
+--------------+
| 74.85714 |
+--------------+
1 row in set (0.00 sec)
1.5 MAX 最大值查询
功能:返回某列的最大值。
语法
SELECT MAX(column_name) FROM table_name WHERE condition;
SUM 使用案例
select max(Chinese) from exam;
+--------------+
| max(Chinese) |
+--------------+
| 88.0 |
+--------------+
1 row in set (0.00 sec)
1.6 MIN 最小值查询
select min(Chinese) from exam;
+--------------+
| min(Chinese) |
+--------------+
| 55.0 |
+--------------+
1 row in set (0.00 sec)
1.7 GROUP BY 分组查询
group by 是一个更复杂的聚合函数;使用group by指定一个列,就会把列的值相同的行归到一组中,分完组之后,还可以针对每个组,分别进行聚合查询
语法
select 分组列 , 聚合函数 from 表名 group by 分组列 having 分组之后的条件
构造数据
create table emp( id int ,name varchar(20) , role varchar(20) , salary int) ;insert into emp values
(1, '张三', '程序员' , 10000 ),
(2, '李四', '程序员' , 11000 ),
(3, '王五', '程序员' , 12000 ),
(4, '赵六', '产品经理', 8000 ),
(5, '田七', '产品经理', 9000 ),
(6, '周八', '老板' , 100000 );


- 简单分组查询
select role , count(id) from emp group by role;-- select role 表示根据 emp 的 role 进行分组查询-- select role , count(id) 表示计算相同 role 的行数

select role , avg(salary), max(salary), min(salary) from emp group by role ;-- 表示根据 role 进行分组,分组后计算相同 role 的平均工资,最大薪资,最小薪资

- 搭配排序使用分组查询
select role , avg(salary) from emp group by role order by avg(salary) desc;-- 根据 role 进行分组查询,对各个分组的平均薪资作降序排序

- 搭配条件筛选进行分组查询
select role , avg(salary) from emp where name != '张三' group by role ;-- 分组前筛选掉名字为张三的记录,然后根据 role 进行分组,分组后求薪资平均值select role , avg(salary) as AvgSalary from emp where name != '张三' group by role ;-- 定义别名

分组之后的添加筛选条件
select role , avg(salary) from emp where name != '张三' group by role having avg(salary) < 50000;-- 每个岗位 role 查询平均薪资,先筛选张三的记录,然后排除平均薪资高于 5w 的记录




相关文章:
【MySQL — 数据库基础】深入解析MySQL的聚合查询
1. 聚合查询 1.1 聚合函数 函数说明COUNT ( [DISTINCT] expr)返回查询到的数据的数量( 行数 )SUM ( [DISTINCT] expr)返回查询到的数据的总和,不是数字没有意义AVG ( [DISTINCT] expr)返回查询到的数据的平均值,不是数字没有意义MAX( [DISTINCT] expr)…...
22.3、IIS安全分析与增强
目录 IIS安全威胁分析iis安全机制iis安全增强 IIS安全威胁分析 iis是微软公司的Web服务软件,主要提供网页服务,除此之外还可以提供其他服务,第一个最主要的是网页服务,第二个是SMTP邮件服务,第三个是FTP文件传输服务。…...
windows平台本地部署DeepSeek大模型+Open WebUI网页界面(可以离线使用)
环境准备: 确定部署方案请参考:DeepSeek-R1系列(1.5b/7b/8b/32b/70b/761b)大模型部署需要什么硬件条件-CSDN博客 根据本人电脑配置:windows11 + i9-13900HX+RTX4060+DDR5 5600 32G内存 确定部署方案:DeepSeek-R1:7b + Ollama + Open WebUI 1. 安装 Ollama Ollama 是一…...
港中文腾讯提出可穿戴3D资产生成方法BAG,可自动生成服装和配饰等3D资产如,并适应特定的人体模型。
今天给大家介绍一种名为BAG(Body-Aligned 3D Wearable Asset Generation)的新方法,可以自动生成可穿戴的3D资产,如服装和配饰,以适应特定的人体模型。BAG方法通过构建一个多视图图像扩散模型,生成与人体对齐…...
【人工智能】Python中的序列到序列(Seq2Seq)模型:实现机器翻译
《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 序列到序列(Seq2Seq)模型是自然语言处理(NLP)中一项核心技术,广泛应用于机器翻译、语音识别、文本摘要等任务。本文深入探讨Seq2Seq模…...
34.日常算法
1.合并区间 题目来源 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 输入&#x…...
DeepSeek深度思考:客户端(Android/iOS)架构设计指南
目标读者:中高级开发者、架构师 适用场景:大型复杂应用开发、跨团队协作、长期维护迭代 一、架构设计核心原则 1.模块化(Modularization) 横向拆分:按功能边界划分(如登录、支付、消息模块)纵向…...
2025 年前端开发现状分析:卷疯了还是卷麻了?
一、前端现状:框架狂飙,开发者崩溃 如果你是个前端开发者,那么你大概率经历过这些场景: 早上打开 CSDN(或者掘金,随便),发现又有新框架发布了,名字可能是 VueXNext.js 之…...
数据库 绪论
目录 数据库基本概念 一.基本概念 1.信息 2.数据 3.数据库(DB) 4.数据库管理系统(DBMS) 5.数据库系统(DBS) 二.数据管理技术的发展 1.人工管理阶段 2.文件系统阶段 3.数据库系统阶段 4.数据库管…...
【AIGC魔童】DeepSeek v3提示词Prompt书写技巧
【AIGC魔童】DeepSeek v3提示词Prompt书写技巧 (1)基础通用公式(适用80%场景)(2)问题解决公式(决策支持)(3)创意生成公式(4)学习提升公…...
Docker 部署 RabbitMQ | 自带延时队列
一、获取镜像 docker pull farerboy/rabbitmq:3.9.9 二、运行镜像 docker run -d --name rabbitmq \n --hostname rabbitmq \n -p 15672:15672/tcp \n -p 5672:5672/tcp \n -v /wwwroot/opt/docker/rabbitmq:/var/lib/rabbitmq \n farerboy/rabbitmq:3.9.9 备注:…...
【Unity】Unity中物体的static属性作用
Unity中物体的static属性主要用于优化游戏性能和简化渲染过程。 Unity中物体的static属性的作用 优化渲染性能:当物体被标记为static时,Unity会在游戏运行时将其视为静止的物体,这意味着这些物体的渲染信息不会随着每一帧的更新而变化…...
网络编程基础1
七层协议模型和四层协议模型 七层协议模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层 四层协议模型:链路层、网络层、传输层、应用层 TCP通信流程 服务器端 (1)创建socket(socket) (2)绑定自己的IP(bind) (3)监听客户端连接(liste…...
跨越边界,大模型如何助推科技与社会的完美结合?
点击蓝字 关注我们 AI TIME欢迎每一位AI爱好者的加入! 概述 2024年,大模型技术已成为人工智能领域的焦点。这不仅仅是一项技术进步,更是一次可能深刻影响社会发展方方面面的变革。大模型的交叉能否推动技术与社会的真正融合?2025年…...
kafka生产端之架构及工作原理
文章目录 整体架构元数据更新 整体架构 消息在真正发往Kafka之前,有可能需要经历拦截器(Interceptor)、序列化器(Serializer)和分区器(Partitioner)等一系列的作用,那么在此之后又会…...
在 Windows 上使用 ZIP 包安装 MySQL 的详细步骤
以下是使用官方 ZIP 包在 Windows 上安装 MySQL 的详细步骤,确保能通过 mysql -uroot -p 成功连接。 步骤 1:下载 MySQL ZIP 包 访问 MySQL 官方下载页面: https://dev.mysql.com/downloads/mysql/选择 Windows (x86, 64-bit), ZIP Archive&…...
【web自动化】指定chromedriver以及chrome路径
selenium自动化,指定chromedriver,以及chrome路径 对应这篇文章,可以点击查看,详情 from selenium import webdriverdef get_driver():# 获取配置对象option webdriver.ChromeOptions()option.add_experimental_option("de…...
记录 | WPF创建和基本的页面布局
目录 前言一、创建新项目注意注意点1注意点2 解决方案名称和项目名称 二、布局2.1 Grid2.1.1 RowDefinitions 行分割2.1.2 Row & Column 行列定位区分 2.1.3 ColumnDefinitions 列分割 2.2 StackPanel2.2.1 Orientation 修改方向 三、模板水平布局【Grid中套StackPanel】中…...
mysql 存储过程和自定义函数 详解
首先创建存储过程或者自定义函数时,都要使用use database 切换到目标数据库,因为存储过程和自定义函数都是属于某个数据库的。 存储过程是一种预编译的 SQL 代码集合,封装在数据库对象中。以下是一些常见的存储过程的关键字: 存…...
Maven 中常用的 scope 类型及其解析
在 Maven 中,scope 属性用于指定依赖项的可见性及其在构建生命周期中的用途。不同的 scope 类型能够影响依赖项的编译和运行阶段。以下是 Maven 中常用的 scope 类型及其解析: compile(默认值): 这是默认的作用域。如果…...
SpringCloud - Nacos注册/配置中心
前言 该博客为Nacos学习笔记,主要目的是为了帮助后期快速复习使用 学习视频:7小快速通关SpringCloud 辅助文档:SpringCloud快速通关 源码地址:cloud-demo 一、简介 Nacos官网:https://nacos.io/docs/next/quickstar…...
C++ 继承(1)
1.继承概念 我们平时有时候在写多个有内容重复的类的时候会很麻烦 比如我要写Student Teacher Staff 这三个类 里面都要包含 sex name age成员变量 唯一不同的可能有一个成员变量 但是这三个成员变量我要写三遍 太麻烦了 有没有好的方式呢? 有的 就是继承…...
【C语言】传值调用与传址调用详解
博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 💯前言💯传值调用1. 什么是传值调用?2. 示例代码:传值调用失败的情况执行结果: 3. 为什么传值调用无法修改外部变量? Ǵ…...
蓝桥杯C语言组:图论问题
蓝桥杯C语言组图论问题研究 摘要 图论是计算机科学中的一个重要分支,在蓝桥杯C语言组竞赛中,图论问题频繁出现,对参赛选手的算法设计和编程能力提出了较高要求。本文系统地介绍了图论的基本概念、常见算法及其在蓝桥杯C语言组中的应用&#…...
windows通过网络向Ubuntu发送文件/目录
由于最近要使用树莓派进行一些代码练习,但是好多东西都在windows里或虚拟机上,就想将文件传输到树莓派上,但试了发现u盘不能简单传送,就在网络上找到了通过windows 的scp命令传送 前提是树莓派先开启ssh服务,且Window…...
Unity抖音云启动测试:如何用cmd命令行启动exe
相关资料:弹幕云启动(原“玩法云启动能力”)_直播小玩法_抖音开放平台 1,操作方法 在做云启动的时候,接完发现需要命令行模拟云环境测试启动,所以研究了下。 首先进入cmd命令,CD进入对应包的文件…...
ZU47DR 100G光纤 高性能板卡
简介 2347DR是一款最大可提供8路ADC接收和8路DAC发射通道的高性能板卡。板卡选用高性价比的Xilinx的Zynq UltraScale RFSoC系列中XCZU47DR-FFVE1156作为处理芯片(管脚可以兼容XCZU48DR-FFVE1156,主要差别在有无FEC(信道纠错编解码࿰…...
【算法】动态规划专题⑥ —— 完全背包问题 python
目录 前置知识进入正题模板 前置知识 【算法】动态规划专题⑤ —— 0-1背包问题 滚动数组优化 完全背包问题是动态规划中的一种经典问题,它与0-1背包问题相似,但有一个关键的区别:在完全背包问题中,每种物品都有无限的数量可用。…...
MySQL——表操作及查询
一.表操作 MySQL的操作中,一些专用的词无论是大写还是小写都是可以通过的。 1.插入数据 INSERT [INTO] table_name (列名称…)VALUES (列数据…), (列数据…); "[]"表示可有可无,插入时,如果不指定要插入的列,则表示默…...
SAP-ABAP:ROLLBACK WORK使用详解
在SAP ABAP 中,ROLLBACK WORK 语句用于回滚当前事务(LUW,Logical Unit of Work),撤销自上次提交或回滚以来的所有数据库更改。它通常与 COMMIT WORK 配合使用,确保数据一致性。 关键点: 回滚作…...
