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 等子句进行查询。