mysql 常用聚合函数总结

【MySQL】17-超详细的MySQL聚合函数总结 超详细的MySQL聚合函数总结,以及SELECT语句的语句结构和执行顺序的讲解。 阅读详情

前言

聚合函数在工作中大量使用,比如常用的 sum求和函数,avg求平均值的函数等,本篇将mysql聚合函数相关的知识点做一些完整的总结;

数据准备

提前创建一张部门表和员工表,并插入若干数据

CREATE TABLE `employees` (
  `employee_id` int(6) NOT NULL DEFAULT '0',
  `first_name` varchar(20) DEFAULT NULL,
  `last_name` varchar(25) NOT NULL,
  `email` varchar(25) NOT NULL,
  `phone_number` varchar(20) DEFAULT NULL,
  `hire_date` date NOT NULL,
  `job_id` varchar(10) NOT NULL,
  `salary` double(8,2) DEFAULT NULL,
  `commission_pct` double(2,2) DEFAULT NULL,
  `manager_id` int(6) DEFAULT NULL,
  `department_id` int(4) DEFAULT NULL,
  PRIMARY KEY (`employee_id`),
  UNIQUE KEY `emp_email_uk` (`email`),
  UNIQUE KEY `emp_emp_id_pk` (`employee_id`),
  KEY `emp_dept_fk` (`department_id`),
  KEY `emp_job_fk` (`job_id`),
  KEY `emp_manager_fk` (`manager_id`),
  CONSTRAINT `emp_dept_fk` FOREIGN KEY (`department_id`) REFERENCES `departments` (`department_id`),
  CONSTRAINT `emp_job_fk` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`),
  CONSTRAINT `emp_manager_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `departments` (
  `department_id` int(4) NOT NULL DEFAULT '0',
  `department_name` varchar(30) NOT NULL,
  `manager_id` int(6) DEFAULT NULL,
  `location_id` int(4) DEFAULT NULL,
  PRIMARY KEY (`department_id`),
  UNIQUE KEY `dept_id_pk` (`department_id`),
  KEY `dept_loc_fk` (`location_id`),
  KEY `dept_mgr_fk` (`manager_id`),
  CONSTRAINT `dept_loc_fk` FOREIGN KEY (`location_id`) REFERENCES `locations` (`location_id`),
  CONSTRAINT `dept_mgr_fk` FOREIGN KEY (`manager_id`) REFERENCES `employees` (`employee_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

在这里插入图片描述
在这里插入图片描述

聚合函数介绍

聚合函数作用于一组数据,并对一组数据返回一个值

在这里插入图片描述

常用聚合函数类型

  • AVG(),SUM(),MAX(),MIN(),COUNT();

聚合函数语法

在这里插入图片描述

1.1 AVG和SUM函数

可以对数值型数据使用AVG 和 SUM 函数。

SELECT AVG(salary), MAX(salary),MIN(salary), SUM(salary) FROM employees WHERE job_id LIKE '%REP%';

1.2 MIN和MAX函数

可以对任意数据类型的数据使用 MIN 和 MAX 函数

SELECT MIN(hire_date), MAX(hire_date) FROM employees;

1.3 COUNT函数

COUNT(*)返回表中记录总数,适用于任意数据类型

SELECT COUNT(*) FROM employees WHERE department_id = 50;

COUNT(expr) 返回expr不为空的记录总数

SELECT COUNT(commission_pct) FROM employees WHERE department_id = 50;

问题1:用count(*),count(1),count(列名)谁好呢?

其实,对于MyISAM引擎的表是没有区别的。这种引擎内部有一计数器在维护着行数。
Innodb引擎的表用count(*),count(1)直接读行数,复杂度是O(n),因为innodb真的要去数一遍。但好于具体的count(列名)。

问题2:能不能使用count(列名)替换count(*) ?

不要使用 count(列名)来替代 count() , count() 是 SQL92 定义的标准统计行数的语法,跟数
据库无关,跟 NULL 和非 NULL 无关。

说明:count()会统计值为 NULL 的行,而 count(列名)不会统计此列为 NULL 值的行。*

基本使用

在这里插入图片描述

可以使用GROUP BY子句将表中的数据分成若干组【WHERE一定放在FROM后面】

SELECT column, group_function(column) FROM table [WHERE condition] [GROUP BY group_by_expression] [ORDER BY column];

在SELECT列表中所有未包含在组函数中的列都应该包含在 GROUP BY子句中

SELECT department_id, AVG(salary) FROM employees GROUP BY department_id ;

在这里插入图片描述

包含在 GROUP BY 子句中的列不必包含在SELECT 列表中

使用多个列分组

在这里插入图片描述

SELECT department_id dept_id, job_id, SUM(salary) FROM employees GROUP BY department_id, job_id ;

在这里插入图片描述
使用 WITH ROLLUP 关键字之后,在所有查询出的分组记录之后增加一条记录,该记录计算查询出的所有记录的总和,即统计记录数量;

SELECT department_id,AVG(salary) FROM employees WHERE department_id > 80 GROUP BY department_id WITH ROLLUP;

在这里插入图片描述

注意:
当使用ROLLUP时,不能同时使用ORDER BY子句进行结果排序,即ROLLUP和ORDER BY是互相排斥的。

HAVING 使用

在这里插入图片描述

过滤分组:HAVING子句

  • 行已经被分组;
  • 使用了聚合函数;
  • 满足HAVING 子句中条件的分组将被显示;
  • HAVING 不能单独使用,必须要跟 GROUP BY 一起使用;

在这里插入图片描述

SELECT department_id, MAX(salary) FROM employees GROUP BY department_id HAVING MAX(salary)>10000 ;

在这里插入图片描述

非法使用聚合函数 : 不能在 WHERE 子句中使用聚合函数。如下:

SELECT department_id, AVG(salary) FROM employees WHERE AVG(salary) > 8000 GROUP BY department_id;

在这里插入图片描述

【MySQL】聚合函数和分组聚合 介绍聚合函数和分组聚合 阅读详情

相关推荐

【MySQL】聚合函数

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

学习笔记。 747

MySQL8_基础_聚合函数

文章目录聚合函数1. 聚合函数介绍1. AVG和SUM函数2. MIN和MAX函数3. COUNT函数2. GROUP BY2.1 基本使用2.2 使用多个列分组2.3 GROUP BY中使用WITH ROLLUP3. HAVING3.1 基本使用3.2 WHERE和HAVING的对比4. SELECT的执行过程4.1 查询的结构4.2 SELECT执行顺序4.3 SQL 的执行原理5. 练习 聚合函数 1. 聚合函数介绍 什么是聚合函数 聚合函数作用于一组数据,并对一组数据返回一个值。 聚合

gingerMr的博客 2112

【MySQL】超详细MySQL常用日期格式转换函数、字符串函数、聚合函数(最新版)

MySQL常用日期格式转换函数(NOW(),SYSDATE(),LOCALTIME(),CURRENT_TIMESTAMP(),CURDATE()...)、字符串函数(LENGTH(),CONCAT(),FIND_IN_SET()...)、聚合函数(COUNT(),GROUP_CONCAT()...)

【实战】T-猿小白的博客 1万+

MySQL:聚合函数(全面详解)

本博主将用优快云记录软件开发求学之路上亲身所得与所学的心得与知识,有兴趣的小伙伴可以关注博主!也许一个人独行,可以走的很快,但是一群人结伴而行,才能走的更远!什么是聚合函数聚合函数作用于一组数据,并对一组数据返回一个值。聚合函数类型AVG()SUM()MAX()MIN()COUNT()聚合函数语法聚合函数不能嵌套调用。比如不能出现类似“AVG(SUM(字段名称))”形式的调用。

weixin_52533007的博客 2万+

MySQL 数据库常用的函数(数学函数、聚合函数、字符串函数、时间函数)

MySQL 数据库常用的函数一、MySQL常用的数学函数常用的数学函数和用法用法实例二、常用的聚合函数常用的聚合函数和用法用法实例mysql> select * from stu;三、常用的字符串函数常用字符串函数的用法用法实例四、常用的时间函数常用的时间函数用法用法实例 一、MySQL常用的数学函数 常用的数学函数和用法 函数名 注释 ads(x) 输出x的绝对值 rand() 输出0到1之间的一个随机数 [0~1),可以返回0但是不能返回1 mod(x,y) 输出x对y取余

wulimingde的博客 532

System Verilog学习笔记(十九)——覆盖率

覆盖率是用来衡量验证精度和完备性的数据指标。也可以告诉我们在仿真时设计的哪些结构被触发,哪些没被触发。高质量的验证需要满足以下三个条件。

ljy77882333的博客 2142

【MySQL】第十部分 常用的聚合函数

【MySQL】第十部分 常用的聚合函数 10. 常用的聚合函数 10.1 MIN和MAX函数 10.2 COUNT函数 10.3 AVG和SUM函数 10.4 GROUP BY 10.5 HAVING 总结

Trees__的博客 910

短视频团队架构&工作流程---2025.3.30

1、负责短视频日常内容分发上线,包括视频头图、标题、简介、推荐位及部分内容元数据的日常导入、审核、上线、下线,并提供各品类短视频的内容上线计划表。(20)运营:视频推送后,实时跟进视频数据,定期统计分析数据报表,根据数据表现 找到问题,并发送给各个小组的负责人,对下一期视频内容进行调整。(4)运营:收到成片,设计视频头图、标题、简介、推荐位等,分发到各个平台,统计分析视频的数据,对各个平台的视频进行管理、用户互动等。1、负责影视、戏剧、广告、专题片等的策划、组稿选题、材料收集、内容策划。

超越神明 2153

【MySQL学习篇】--- 聚合函数 和 常用函数

【MySQL学习篇】— 聚合函数 和 常用函数 聚合函数 在MySQL中,函数使用select关键字调用:select 函数名(字段名) from 表名 最大值: max(字段名) 最小值: min(字段名) SELECT MAX(score) FROM users; SELECT MIN(score) as 最低分 FROM users; 求平均数: avg(字段名) SELECT AVG(score) AS 平均分 FROM users; 求和: sum(字段名) SELECT SUM(scor

HappyCode 271

中科蓝讯(第一次使用指南)

中科蓝讯 新手指南

qq_48579018的博客 1万+

IEEE 754浮点数与十六进制转换:从原理到实战避坑指南

在计算机系统中,数据的二进制表示与内存布局是底层开发的核心基础。IEEE 754标准定义了浮点数在内存中的精确格式,包括符号位、指数位和尾数位的分工,以及零、无穷大和NaN等特殊值的编码。理解这一原理对于处理原始字节流至关重要,尤其是在涉及跨平台或跨设备通信时。其技术价值在于,它能帮助开发者从根本上解决数据解析错误、通信协议不一致以及程序调试中的“灵异”问题。在嵌入式开发、网络通信(如Modbus协议)和固件解析等应用场景中,浮点数与十六进制的转换是高频操作。然而,字节序(大端/小端)是转换过程中最常见的“

weixin_33835103的博客 430

MySql 常用的聚合函数总结

功能:用于将查询结果中的多个行合并成一个字符串,并以逗号或其他指定的分隔符分隔。聚合函数通常与 SELECT 语句一起使用,用于生成汇总信息。功能:用于计算指定列中数值的平均值。功能:用于计算指定列的总体标准偏差。功能:用于计算指定列的样本标准偏差。功能:用于计算指定列或表中的行数。功能:用于计算指定列中数值的总和。功能:用于找出指定列中的最大值。功能:用于找出指定列中的最小值。功能:用于计算指定列的标准偏差。功能:用于计算指定列的总体方差。功能:用于计算指定列的样本方差。功能:用于计算指定列的方差。

2301_80794191的博客 841

Fluent DPM模型保姆级教程:三通管颗粒流动模拟,从网格导入到轨迹图生成

本文提供Fluent DPM模型在三通管颗粒流动模拟中的保姆级教程,涵盖从网格导入到轨迹图生成的全流程。通过详细步骤和参数设置,帮助用户掌握DPM模型在颗粒流动模拟中的关键技巧,适用于化工、能源等领域的工程应用。

weixin_30615767的博客 579

mysql常用的聚合函数

<br />GROUP BY(聚合)函数<br />本章论述了用于一组数值操作的 group (集合)函数。除非另作说明, group 函数会忽略 NULL 值。<br />假如你在一个不包含 ROUP BY子句的语句中使用一个 group函数 ,它相当于对所有行进行分组。<br />AVG([DISTINCT] expr) <br />返回expr 的平均值。 DISTINCT 选项可用于返回 expr的不同值的平均值。<br />若找不到匹配的行,则AVG()返回 NULL 。<br />mysql>

liaomin416100569的专栏 1707

model_optimizer将pi05端到端延时进一步优化到68.13ms了

目前在保持灵活性和性能之间找到一个较好的平衡。vit, llm仍然使用onnx->trt_engine的路径,量化可以通过https://github.com/NVIDIA/Model-Optimizer.git支持。同时支持通过cutedsl手写算子进行进一步优化denoise因为步数多,kernel launch多,因此完全通过手写融合算子实现,将所有steps进行一次大的cuda graph capture.

happyAnger6的专栏 59

【GameFramework框架内置模块】9、有限状态机(FSM)

这篇文章分享FSM有限状态机,了解过StarForce源码的同学相比都比较了解,GameFramework框架给我们抽象了一个Procedure流程的概念。这个Procedure流程可以方便的处理我们游戏从启动到游戏的各个流程阶段的处理逻辑,实现的核心就是FSM状态机,内部的Procedure流程就是不同的FsmState状态。接下来,就是FSM有限状态机的教程了。有限状态机(Finite-state machine,FSM)

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 2533

mysql 常用的聚合函数_MySQL 常用的一些 (就几个) 聚合函数

MySQL 常用的一些 (就几个) 聚合函数聚合函数 (常用)函数名称描述CONUT()记数SUM()求和AVG()平均值MAX()最大值MIN()最小值-- ================= 聚合函数 ===============-- 都能统计表中的数据SELECT COUNT(`subject`) FROM `subject` -- count(字段) 会忽略所有的 null 值SEL...

weixin_35993037的博客 323

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

MySQL最常用分组聚合函数

MySQL最常用分组聚合函数 https://www.cnblogs.com/geaozhang/p/6745147.html 一、聚合函数(aggregation function)—也就是组函数 在一个行的集合(一组行)上进行操作,对每个组给一个结果。 常用的组函数: AVG([distinct] expr) 求平均值 COUNT({*|[distinct] } expr) 统计行的数量 ...

thatkrisyang 380

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

8-MySQL-常用函数和聚合函数

MySQL -> 函数 官网:https://dev.mysql.com/doc/refman/5.7/en/sql-function-reference.html 1. 常用函数 -- 数学运算 SELECT ABS(-8) -- 绝对值8 SELECT CEILING(9.4) -- 向上取整10 SELECT FLOOR(9.4) -- 向下取整9 SELECT RAND() -- 0~1随机数 SELECT SIGN(10) -- 判断参数的符号 0:0 负数:-1 正数:1 --

baidu_38126306的博客 299

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

写出mysql中常用的5个聚合函数_MySQL常用聚合函数详解

一、AVGAVG(col)返回指定列的平均值二、COUNTCOUNT(col)返回指定列中非NULL值的个数三、MIN/MAXMIN(col):返回指定列的最小值MAX(col):返回指定列的最大值四、SUMSUM(col)返回指定列的所有值之和五、GROUP_CONCATGROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_int...

weixin_39853892的博客 2225

MySQL聚合函数的特点和用途_MySQL常用聚合函数详解

一、AVGAVG(col)返回指定列的平均值二、COUNTCOUNT(col)返回指定列中非NULL值的个数三、MIN/MAXMIN(col):返回指定列的最小值MAX(col):返回指定列的最大值四、SUMSUM(col)返回指定列的所有值之和五、GROUP_CONCATGROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_int...

weixin_39924779的博客 1291

MySQL中的常用函数和聚合函数

MySQL二十:常用函数和聚合函数 官网:https://dev.mysql.com/doc/refman/8.0/en/built-in-function-reference.html 常用函数: -- ========================== 常用函数========================== -- 数学运算 SELECT ABS(-8) -- 绝对值 SELECT CEILING(9.4) -- 向上取整 SELECT FLOOR(9.4) -- 向下取整 SELECT RAN

... 252

mysql聚合函数详解_MySQL常用聚合函数详解

一、AVGAVG(col)返回指定列的平均值二、COUNTCOUNT(col)返回指定列中非NULL值的个数三、MIN/MAXMIN(col):返回指定列的最小值MAX(col):返回指定列的最大值四、SUMSUM(col)返回指定列的所有值之和五、GROUP_CONCATGROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_int...

weixin_39743622的博客 462
上一篇: Spark 常用部署模式
下一篇: Spark 创建RDD的几种方式
逆风飞翔的小叔
逆风飞翔的小叔 新星创作者: 大数据技术领域 新星创作者: 大数据技术领域
博客等级 码龄5年 1万+粉丝 215原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逆风飞翔的小叔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值