SQL 聚合函数

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用于计算总体标准差。
SUMSELECT 语句选择的行的总数或总和。
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]
Aggregate Functions Example 1

其余聚合函数列表,包括 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
Aggregate Functions Example 2