SQL 聚合函数

2025 年 6 月 11 日 | 阅读 9 分钟

SQL 具有一个名为聚合函数的功能,用于对一组记录进行计算并给出单个值。在本文中,我们将探讨聚合函数,以便我们能理解聚合函数及其工作原理。

什么是聚合函数?

SQL 中的聚合函数是独特函数,它们作用于表中的一组行并生成单个结果值。这些操作用于计算一组数字并生成汇总统计信息,如总和、计数、平均值、最大值和最小值。SQL 查询通常使用聚合过程来精简一个或多个表的数据。

在分组和聚合之后,聚合函数还可以与 GROUP BY 或 WHERE 子句一起使用,以进一步筛选数据。可以使用涉及聚合函数的条件来使用 GROUP BY 或 WHERE 子句筛选查询结果。

以下是 SQL 中一些常用的聚合函数。让我们通过各种示例来理解每个函数。

函数名描述
COUNT()它返回一组记录或数字中 NOT NULL 值的总数。
SUM()它返回表中一列所有值的总和。
AVG()它返回所有非 NULL 值的平均值。
MIN()它返回给定列值中的最小值。
MAX()它返回给定列值中的最大值。

SQL Aggregate Functions

1. COUNT()

此函数返回表中的记录(行)数。COUNT() 函数的语法如下。

语法

在此,SELECT 将检索所需值,COUNT() 是计算表中行数的聚合函数,column_name 是您想知道其值数量的列的名称,而 WHERE 子句仅在使用提取满足条件的特定数据时使用。

示例

考虑以下 Student 表来理解 COUNT() 函数的功能。

表:Student

Roll_noStudent_name部门
421AbhishekCSE
422PraveenEEE
423RehmanECE
424PriyankaIT
425AnishCSE

SQL 查询

输出

COUNT(*)
5

说明

执行上述查询后,结果如上所示。COUNT(*) 函数计算表中的总行数。

使用列别名

输出

Total_Count
5

说明

执行上述查询后,结果如上所示。在此,COUNT() 函数计算表中的总行数,并将结果作为别名 Total_Count 存储。

带 WHERE 子句的 COUNT()

现在,让我们将 WHERE 子句附加到 COUNT() 并查看其工作原理。

输出

COUNT(*)
2

说明

执行上述查询后,结果如上所示。COUNT() 函数计算表中部门名称为 CSE 的行数。

带 DISTINCT 子句的 COUNT()

DISTINCT 返回表中唯一记录(行)的数量。

语法

示例

输出

COUNT(DISTINCT Department)
4

说明

执行上述查询后,结果如上所示。COUNT() 函数计算表中部门列的唯一值数量。

将 GROUP BY 子句与 COUNT() 结合使用

输出

Total_Count部门
2CSE
1EEE
1ECE
1IT

说明

执行上述查询后,COUNT() 函数通过按部门分组来计算表中的总行数,并将结果作为别名 Total_Count 与其各自的部门一起存储。

将 HAVING 子句与 COUNT() 结合使用

输出

Total_Count部门
2CSE

说明

执行上述查询后,COUNT() 函数通过按部门分组来计算表中的行数,其中部门计数大于 1,并在计算后将结果作为别名 Total_Count 存储。

2. SUM()

此函数返回表中一列所有值的总和。SUM() 函数的语法如下。

语法

SELECT SUM(column_name) FROM table_name WHERE condition;

在此,column_name 是您想查找其值总和的列的名称,而 WHERE 子句仅在您想筛选数据并对筛选后的数据应用 SUM() 函数时使用。

示例

观察以下 Products 表以了解 SUM() 函数的功能。

表:Products

Product_idProduct_name价格
1笔记本电脑50000.00
2Shirt500.00
3监视700.00
4移动端20000.00
5键盘1800.00
6移动端18000.00

SQL 查询

输出

SUM(Price)
91000.00

说明

执行上述查询后,SUM() 函数计算表中价格的总和。

使用列别名

输出

Total_Sum
91000.00

说明

执行上述查询后,SUM() 函数计算表中总价格,并将结果作为别名 Total_Sum 存储。

将 WHERE 子句与 SUM() 结合使用

现在,让我们计算 Products 表中存在的手机的价格总和。

SQL 查询

输出

SUM(Price)
38000.00

说明:执行上述查询后,SUM() 函数计算表中 Product_name 等于 Mobile 的价格总和。

将 GROUP BY 子句与 SUM() 结合使用

输出

Total_SumProduct_name
50000.00笔记本电脑
500.00Shirt
700.00监视
38000.00移动端
1800.00键盘

说明

执行上述查询后,SUM() 函数通过对表中的产品进行分组来计算价格的总和,并将结果作为别名 Total_Sum 存储。

3. AVG()

此函数返回列中所有值的平均值。AVG() 函数的语法如下。

语法

在此,column_name 是您需要查找列中值的平均值的列的名称,而 WHERE 子句仅在您想将 AVG() 函数应用于满足给定条件的特定数据时使用。

让我们考虑 Cars 表来应用 AVG() 并查看其工作原理。

表:Cars

Car_idCar_name价格
1Mahindra Scorpio19791.48
2Mahindra Thar18627.28
3Hyundai Creta17463.08
4Tata Punch10477.60
5Maruti Swift9895.26
6Toyoto Fortuner46565.92

现在,让我们使用 AVG() 函数计算所有汽车价格的平均值。

输出

AVG(Price)
20470.103333

说明

执行上述查询后,AVG() 函数计算汽车的平均价格。

使用列别名

输出

Average_Price
20470.103333

说明

执行上述查询后,AVG() 函数计算表中汽车的平均价格,并将结果作为别名 Average_Price 存储。

将 WHERE 子句与 AVG() 结合使用

现在,让我们使用 WHERE 子句结合 AVG() 函数来计算价格大于 11000 的汽车的平均价格。

输出

AVG(Price)
25611.940000

说明:执行上述查询后,AVG() 函数计算表中价格大于 11000 的汽车的平均价格。

将 GROUP BY 子句与 SUM() 结合使用

输出

Total_SumCar_name
19791.48Mahindra Scorpio
18627.28Mahindra Thar
17463.08Hyundai Creta
10477.60Tata Punch
9895.26Maruti Swift
46565.92Toyoto Fortuner

说明

执行上述查询后,AVG() 函数通过对表中的汽车进行分组来计算价格的平均值,并将结果作为别名 Total_Sum 存储。

4. MIN()

此函数生成满足给定标准的某行组在列中的最小值。MIN() 函数的语法如下。

语法

在此,column_name 是您需要从中查找列中最小值的列的名称,而 WHERE 子句仅在您想将 MIN() 函数应用于满足给定条件的特定数据时使用。

让我们考虑以下 Employees 表来演示 MIN() 函数的功能。

表:Employees

emp_idemp_namesalarydepartment
155Hafeez40000销售
156克里希纳河25000营销
157Kalyan20000R&D
158Kaveri50000R&D
159Lavanya60000HR
160Hrithik12000营销

现在,让我们应用 MIN() 函数来找出 salary 列中的最小值。

输出

MIN(salary)
12000

说明

执行上述查询后,MIN() 函数计算表中最小的工资。

使用列别名

输出

Lowest_Salary
12000

说明

执行上述查询后,MIN() 函数计算表中最小的工资,并将结果作为别名 Lowest_Salary 存储。

将 WHERE 子句与 MIN() 结合使用

现在,让我们找出 R&D 部门的最低工资。

输出

MIN(salary)
20000

说明

执行上述查询后,结果如上所示。在此,MIN() 函数计算表中部门名称等于 R&D 的最小工资。

将 GROUP BY 子句与 MIN() 结合使用

输出

Lowest_Salarydepartment
40000.00销售
12000.00营销
20000.00R&D
60000.00HR

说明

执行上述查询后,MIN() 函数通过对表中的部门进行分组来计算最低工资,并将结果作为别名 Lowest_Salary 存储。

5. MAX()

SQL 中的 MAX 函数用于返回表中满足给定条件的某行组在列中的最大值。

语法

在此,column_name 是您需要从中查找列中最大值的列的名称,而 WHERE 子句仅在您想将 MAX() 函数应用于满足给定条件的特定数据时使用。

考虑 Dogs 表来理解 MAX 函数的功能。

表:Dogs

dog_iddog_namedog_breeddog_weight
1MaxGerman Shepherd30.00
2查理Labrador25.80
3RockyGerman Shepherd35.50
4FluffyPomeranian5.60
5OreoBeagle12.00
6DaisyChihuahua2.50

现在,让我们使用 MAX() 函数找出 dog_weight 列中的最大体重。

输出

MAX(dog_weight)
35.50

说明

执行上述查询后,MAX() 函数计算表中狗的最大体重。

使用列别名

输出

Maximum_Weight
35.50

说明

执行上述查询后,MAX() 函数计算表中最大工资,并将结果作为别名 Maximum_Weight 存储。

将 WHERE 子句与 MAX() 结合使用

现在,使用 WHERE 子句结合 MAX() 函数找出 German Shepherd 品种的最大体重。

输出

MAX(dog_weight)
35.50

说明

执行上述查询后,MAX() 函数从 Dogs 表中计算出 dog_breedGerman Shepherd 的狗的最大体重。

将 GROUP BY 子句与 MAX() 结合使用

输出

Maximum_Weightdog_breed
35.50German Shepherd
25.80Labrador
5.60Pomeranian
12.00Beagle
2.50Chihuahua

说明

执行上述查询后,MAX() 函数通过对表中的 dog_breed 进行分组来计算所有狗品种的最大体重,并将结果作为别名 Maximum_Weight 存储。

结论

我们已经理解了 SQL 聚合函数,它们是用于计算一组值并返回单个值的操作。它们对于处理大量数据集非常有用,因为我们可以计算总和和平均值、计数行以及查找最小值和最大值。一些常见的聚合函数包括 COUNTSUMAVGMINMAX。我们已经通过示例讨论了所有常见的聚合函数。我们将聚合函数与 GROUP BY 子句结合使用。我们使用这些函数来增强从数据库中提取有意义信息的能力。


下一主题SQL 中的 Commit