SQL Server 提供了各种聚合函数,这些函数允许我们执行诸如计算平均值、总和、最小值、最大值、计数等聚合操作。
SQL 聚合函数
聚合函数用于提取累积的、总的或高级别的数据。例如,区域总销售额、按国家划分的产品销售额等。
要使用这些 SQL 函数,您必须为非聚合列使用 `GROUP BY` 子句。否则,它将抛出错误。
下表将显示可用聚合函数的列表。如果要使用任何表达式来限制记录,请使用 Having 子句,而不是 Where 子句。
| 聚合函数 | 描述 |
|---|---|
| AVG | 它将计算 SELECT 语句选择的总记录(或行)的平均值。 |
| CHECKSUM_AGG | 用于返回组中值的校验和。 |
| COUNT | 它将计算 SELECT 语句选择的记录数。 |
| COUNT_BIG | 它的功能与 COUNT 函数相同,但它返回 bigint 类型。 |
| GROUPING | 用于指示 GROUP BY 子句中指定的列是否已被聚合。 |
| GROUPING_ID | 这个 SQL Server 函数用于返回分组级别。 |
| MAX | 返回所选总记录中的最大值。 |
| MIN | 返回所选总行中的最小值。 |
| STDEV | 计算所选记录的标准差。 |
| STDEVP | 用于计算总体标准差。 |
| SUM | SELECT 语句选择的行的总数或总和。 |
| VAR | 所选记录的统计方差。 |
| VARP | 总体的统计方差。 |
SQL Server 聚合函数示例
以下查询将向您展示一些聚合函数,例如 AVG、VAR、VARP、STDEV、STDEVP、SUM、MIN、MAX 和 COUNT。
SELECT COUNT([EmployeeID]) AS [Total Employees]
,[Occupation]
,AVG([YearlyIncome]) AS [Average Income]
,VAR([YearlyIncome]) AS [Income Variance]
,VARP([YearlyIncome]) AS [Income Varp]
,STDEV([YearlyIncome]) AS [Income Deviation]
,STDEVP([YearlyIncome]) AS [Income stdevp]
,SUM([Sales]) AS [Total Sale]
,MIN([Sales]) AS [Minimum Sale]
,MAX([Sales]) AS [Maximum Sale]
,COUNT_BIG([DeptID]) AS [Dept Count_BIG]
FROM [MyEmployees]
GROUP BY [Occupation]

其余聚合函数列表,包括 Grouping、checksum_agg 和 Grouping_id,
SELECT [Education]
,[Occupation]
,GROUPING([Education]) AS 'Edu Grouping'
,GROUPING([Occupation]) AS 'Occ Grouping'
,GROUPING_ID([Education], [Occupation]) AS 'Grouping ID'
,CHECKSUM_AGG(DISTINCT CAST(DeptID AS INT)) AS [Unique Department ID]
,CHECKSUM_AGG(DISTINCT CAST([ManagerID] AS INT)) AS [Unique Manager ID]
FROM [MyEmployees]
GROUP BY [Education]
,[Occupation] WITH ROLLUP
