聚合函数
1). 介绍
聚合函数是SQL中用于对一列数据进行纵向计算的函数。它们将一列数据作为一个整体,进行统计、求和、求平均等操作。聚合函数在数据分析和报表生成中非常有用。
2). 常见的聚合函数
- COUNT:统计行数或非NULL值的数量。
- SUM:计算某一列的总和。
- AVG:计算某一列的平均值。
- MAX:找出某一列的最大值。
- MIN:找出某一列的最小值。
3). 语法
聚合函数的基本语法如下:
SELECT 聚合函数(字段列表) FROM 表名;
注意:NULL值是不参与所有聚合函数运算的。
案例
假设我们有一个名为emp
的表,表结构如下:
CREATE TABLE emp (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(50),
age INT,
idcard VARCHAR(18),
region VARCHAR(50)
);
插入一些示例数据:
INSERT INTO emp (name, age, idcard, region) VALUES
('Alice', 30, '123456789012345678', 'Beijing'),
('Bob', 25, '987654321098765432', 'Shanghai'),
('Charlie', 35, NULL, 'Xi\'an'),
('David', 40, '111111111111111111', 'Beijing'),
('Eve', 28, '222222222222222222', 'Shanghai');
A. 统计该企业员工数量
SELECT COUNT(*) FROM emp; -- 统计的是总记录数
SELECT COUNT(idcard) FROM emp; -- 统计的是idcard字段不为null的记录数
SELECT COUNT(1) FROM emp; -- 统计的是总记录数
B. 统计该企业员工的平均年龄
SELECT AVG(age) FROM emp;
C. 统计该企业员工的最大年龄
SELECT MAX(age) FROM emp;
D. 统计该企业员工的最小年龄
SELECT MIN(age) FROM emp;
E. 统计西安地区员工的年龄之和
SELECT SUM(age) FROM emp WHERE region = 'Xi\'an';
拓展
1. GROUP BY 子句:
- 概念:GROUP BY 子句用于将查询结果按一个或多个字段进行分组,常与聚合函数一起使用。
- 示例:统计每个地区的员工数量和平均年龄。
SELECT region, COUNT(*), AVG(age) FROM emp GROUP BY region;
2. HAVING 子句:
- 概念:HAVING 子句用于在GROUP BY之后对分组结果进行过滤。
- 示例:统计员工数量大于1的地区的平均年龄。
SELECT region, COUNT(*), AVG(age) FROM emp GROUP BY region HAVING COUNT(*) > 1;
3. 聚合函数的组合使用:
- 概念:可以在一个查询中组合使用多个聚合函数。
- 示例:统计每个地区的员工数量、平均年龄、最大年龄和最小年龄。
SELECT region, COUNT(*), AVG(age), MAX(age), MIN(age) FROM emp GROUP BY region;