MySQL 聚合函数深入讲解与实战演练

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: MySQL 聚合函数深入讲解与实战演练

在处理大量数据时,聚合函数是SQL查询中不可或缺的一部分,它们帮助我们对数据进行汇总、分析,提取出关键信息。MySQL支持多种聚合函数,如COUNT()SUM()AVG()MAX()MIN()以及更高级的GROUP_CONCAT()STDDEV()等。本文将深入探讨这些聚合函数的用法,结合具体实例,让你掌握如何高效地在MySQL中进行数据聚合。

一、COUNT()

COUNT()函数用来计算行数,可以统计表中的所有行数或者满足特定条件的行数。

统计总行数

SELECT COUNT(*) FROM employees;

统计非空值

SELECT COUNT(salary) FROM employees;

二、SUM()

SUM()函数用于计算一列数值的总和。

SELECT SUM(salary) FROM employees;

三、AVG()

AVG()函数计算一列数值的平均值。

SELECT AVG(salary) FROM employees;

四、MAX() & MIN()

MAX()MIN()分别用于找出一列中的最大值和最小值。

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

五、GROUP BY与聚合函数的结合

通过GROUP BY子句,可以将数据分为多个组,然后对每个组应用聚合函数。

按部门统计平均薪资

SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department;

六、GROUP_CONCAT()

GROUP_CONCAT()函数用于将同一组内的值连接成字符串,常用于生成列表或标签云。

SELECT department, GROUP_CONCAT(name SEPARATOR ', ') AS employees_list
FROM employees
GROUP BY department;

七、更高级的聚合函数

除了上述常用函数,MySQL还提供了如STDDEV()(标准差)、VARIANCE()(方差)等,用于统计分析。

计算薪资的标准差

SELECT STDDEV(salary) AS salary_stddev FROM employees;

八、WITH ROLLUP的使用

WITH ROLLUP可以在GROUP BY查询的结果基础上,额外生成一个汇总行。

SELECT department, AVG(salary) AS average_salary
FROM employees
GROUP BY department WITH ROLLUP;

这将不仅按部门分组计算平均薪资,还会在最后提供一个总体的平均薪资。

九、实战演练:员工薪资分析

假设有employees表,包含idnamedepartmentsalary字段,下面是一个综合应用案例,演示如何使用聚合函数进行数据分析。

任务

  1. 统计各部门员工数量。
  2. 计算公司整体的平均薪资、最高薪资和最低薪资。
  3. 分析各部门的平均薪资,并找出平均薪资最高的部门。
  4. 列出每个部门的员工名单。

SQL脚本

-- 1. 统计各部门员工数量
SELECT department, COUNT(*) AS employee_count
FROM employees
GROUP BY department;

-- 2. 计算整体平均薪资、最高薪资和最低薪资
SELECT AVG(salary) AS overall_avg_salary, 
       MAX(salary) AS max_salary, 
       MIN(salary) AS min_salary
FROM employees;

-- 3. 分析各部门平均薪资,并找出平均薪资最高的部门
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
ORDER BY avg_salary DESC
LIMIT 1;

-- 4. 列出每个部门的员工名单
SELECT department, GROUP_CONCAT(name SEPARATOR ', ') AS employee_names
FROM employees
GROUP BY department;
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
SQL 关系型数据库 MySQL
MySQL:表的设计原则和聚合函数
本文详细介绍了数据库表设计的原则与范式,包括从需求中找到实体及其属性,确定实体间关系,并使用SQL创建具体表。文章还深入探讨了一范式、二范式和三范式的要求及不满足这些范式时可能遇到的问题。此外,文中通过实例解释了一对一、一对多和多对多关系的表设计方法,并介绍了如何使用聚合函数如 COUNT()、SUM()、AVG()、MAX() 和 MIN() 进行数据统计和分析。最后,文章还展示了如何通过 SQL 语句实现数据的复制和插入操作。
44 7
MySQL:表的设计原则和聚合函数
|
1月前
|
监控 关系型数据库 MySQL
zabbix agent集成percona监控MySQL的插件实战案例
这篇文章是关于如何使用Percona监控插件集成Zabbix agent来监控MySQL的实战案例。
32 2
zabbix agent集成percona监控MySQL的插件实战案例
|
2月前
|
SQL 关系型数据库 MySQL
干货!python与MySQL数据库的交互实战
干货!python与MySQL数据库的交互实战
|
2月前
|
存储 关系型数据库 MySQL
实战!MySQL主从复制一键搭建脚本分享
实战!MySQL主从复制一键搭建脚本分享
36 2
|
2月前
|
SQL 存储 关系型数据库
MySQL备份:mydumper 备份恢复工具生产实战
MySQL备份:mydumper 备份恢复工具生产实战
|
2月前
|
关系型数据库 MySQL Linux
【一键解锁神秘力量!】CentOS 7 通过编译源码方式安装 MySQL 数据库 —— 从零到英雄的数据库安装实战秘籍!
【8月更文挑战第9天】随着业务增长,对数据库的需求日益提高。在 CentOS 7 中,通过编译源码安装 MySQL 可提供更高定制性和灵活性。本文详细介绍从准备环境、下载源码、配置编译参数到安装 MySQL 的全过程,并对比 RPM 包安装方法,帮助读者根据需求选择合适方案。实践时需注意备份数据、选择合适版本、确保安全性和调优性能等要点。
157 1
|
2月前
|
canal 关系型数据库 MySQL
"揭秘阿里数据同步黑科技Canal:从原理到实战,手把手教你玩转MySQL数据秒级同步,让你的数据处理能力瞬间飙升,成为技术界的新晋网红!"
【8月更文挑战第18天】Canal是一款由阿里巴巴开源的高性能数据同步系统,它通过解析MySQL的增量日志(Binlog),提供低延迟、可靠的数据订阅和消费功能。Canal模拟MySQL Slave与Master间的交互协议来接收并解析Binary Log,支持数据的增量同步。配置简单直观,包括Server和Instance两层配置。在实战中,Canal可用于数据库镜像、实时备份等多种场景,通过集成Canal Client可实现数据的消费和处理,如更新缓存或写入消息队列。
418 0
|
2月前
|
存储 关系型数据库 MySQL
MySQL中的DISTINCT与GROUP BY:效率之争与实战应用
【8月更文挑战第12天】在数据库查询优化中,DISTINCT和GROUP BY常常被用来去重或聚合数据,但它们在实现方式和性能表现上却各有千秋。本文将深入探讨两者在MySQL中的效率差异,结合工作学习中的实际案例,为您呈现一场技术干货分享。
261 0
|
23天前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
25天前
|
存储 SQL 关系型数据库
使用MySQL Workbench进行数据库备份
【9月更文挑战第13天】以下是使用MySQL Workbench进行数据库备份的步骤:启动软件后,通过“Database”菜单中的“管理连接”选项配置并选择要备份的数据库。随后,选择“数据导出”,确认导出的数据库及格式(推荐SQL格式),设置存储路径,点击“开始导出”。完成后,可在指定路径找到备份文件,建议定期备份并存储于安全位置。
185 11