SQL Server中的聚合函数有哪些

1.什么是聚合函数

聚集函数是 SQL 的一个组成部分,它用于返回基于组的单个值。可以使用聚集函数计算某一列的最大值、最小值、平均数、总和等指标。SQL Server 中提供了多种聚合函数。

2.常见的聚合函数

2.1 SUM 函数

SUM 函数用于计算一列的总和。例如,计算一个销售表中的销售总额:

SELECT SUM(salesAmount) FROM SalesTable;

上面的代码返回了销售表中所有销售额的总和。如果需要计算特定条件下的销售总额,可以添加 WHERE 子句。

2.2 COUNT 函数

COUNT 函数用于计算一列的行数。例如,查询一张学生表中的总人数:

SELECT COUNT(*) FROM StudentTable;

上面的代码返回了学生表中所有学生的总人数。

如果需要查询特定条件下的学生人数,可以添加 WHERE 子句。COUNT 还有一个常见的变体,COUNT(DISTINCTcolumn),它可以计算一列中唯一值的数量。

2.3 AVG 函数

AVG 函数用于计算一列的平均值。例如,查询一张学生表中的平均分:

SELECT AVG(score) FROM StudentTable;

上面的代码返回了学生表中所有学生的平均分。

2.4 MAX 函数

MAX 函数用于计算一列的最大值。例如,查询一张学生表中的最高分数:

SELECT MAX(score) FROM StudentTable;

上面的代码返回了学生表中最高的分数。

2.5 MIN 函数

MIN 函数用于计算一列的最小值。例如,查询一张学生表中的最低分数:

SELECT MIN(score) FROM StudentTable;

上面的代码返回了学生表中最低的分数。

3.聚合函数的使用技巧

3.1 过滤空值

聚合函数经常用于计算某列的指标,但是有时候某些行可能缺失数据,这会对聚合函数的结果产生影响。例如,计算一列的平均值时,如果该列中存在空值,AVG 函数会认为空值为 0,从而导致结果出现偏差。因此,要过滤空值,可以使用如下语句:

SELECT AVG(score) FROM StudentTable WHERE score IS NOT NULL;

上面的代码使用 IS NOT NULL 过滤掉学生表中空值的行,从而得到准确的平均分数。

3.2 分组查询

聚合函数可以结合 GROUP BY 子句进行分组,以便计算特定组内的指标值。例如,查询学生表按照性别分组后的平均分:

SELECT gender, AVG(score) FROM StudentTable GROUP BY gender;

上面的代码按照性别分组查询学生表中的平均分数。

3.3 过滤分组结果

在 GROUP BY 子句之后,可以使用 HAVING 子句对聚合结果进行过滤。例如,查询学生表中所有男学生的平均分数大于 80 分的组:

SELECT gender, AVG(score) FROM StudentTable WHERE gender = '男' GROUP BY gender HAVING AVG(score) > 80;

上面的代码按照性别分组查询学生表中所有男学生的平均分数,并过滤掉平均分数小于 80 的组。

3.4 嵌套聚合函数

聚合函数也可以作为另一个聚合函数的参数,从而实现更复杂的查询。例如,查询学生表中最高的平均分数:

SELECT MAX(AVG(score)) FROM StudentTable GROUP BY gender;

上面的代码按照性别分组查询学生表中的平均分数,并计算各组中最高的平均分数。

4.总结

聚合函数是 SQL 中常用的操作之一,可以对一列数据进行计算并返回单一的数值结果。SQL Server 中提供了多种聚合函数,包括 SUM、COUNT、AVG、MAX、MIN 等。使用聚合函数时需要注意过滤空值、分组查询、过滤分组结果和嵌套聚合函数等技巧。应根据实际情况选择合适的聚合函数,并根据需要结合 WHERE、GROUP BY 和 HAVING 等子句进行查询。

数据库标签