聚合规范函数

聚合是缩减一系列输入值(例如,缩减为单个值)的表达式。 聚合通常与 SELECT 表达式的 GROUP BY 子句一起使用,对于可以使用聚合的位置存在一些约束。

聚合实体 SQL 规范函数

下面是聚合实体 SQL 规范函数。

Avg(expression)

返回非 null 值的平均值。

参数

Int32Int64DoubleDecimal

返回值

如果所有输入值都是 null 值,则类型为 expressionnull

示例

queryString = @"SELECT VALUE AVG(p.ListPrice)
    FROM AdventureWorksEntities.Products as p";
SELECT VALUE AVG(p.ListPrice) 
FROM AdventureWorksEntities.Products AS p 

BigCount(expression)

返回包含 null 值和重复值的聚合的大小。

参数

任何类型。

返回值

Int64

示例

queryString = @"SELECT VALUE BigCount(p.ProductID)
    FROM AdventureWorksEntities.Products as p";
SELECT VALUE BigCount(p.ProductID) 
FROM AdventureWorksEntities.Products AS p 

Count(expression)

返回包含 null 值和重复值的聚合的大小。

参数

任何类型。

返回值

Int32

示例

queryString = @"SELECT VALUE Count(p.ProductID)
    FROM AdventureWorksEntities.Products as p";
SELECT VALUE Count(p.ProductID) 
FROM AdventureWorksEntities.Products AS p 

Max(expression)

返回非 null 值的最大值。

参数

ByteInt16Int32Int64ByteSingleDoubleDecimalDateTimeDateTimeOffsetTimeStringBinary

返回值

如果所有输入值都是 null 值,则类型为 expressionnull

示例

queryString = @"SELECT VALUE MAX(p.ListPrice)
    FROM AdventureWorksEntities.Products as p";
SELECT VALUE MAX(p.ListPrice) 
FROM AdventureWorksEntities.Products AS p 

Min(expression)

返回非 null 值的最小值。

参数

ByteInt16Int32Int64ByteSingleDoubleDecimalDateTimeDateTimeOffsetTimeStringBinary

返回值

如果所有输入值都是 null 值,则类型为 expressionnull

示例

queryString = @"SELECT VALUE MIN(p.ListPrice)
    FROM AdventureWorksEntities.Products as p";
SELECT VALUE MIN(p.ListPrice) 
FROM AdventureWorksEntities.Products AS p 

StDev(expression)

返回非 null 值的标准偏差。

参数

Int32Int64DoubleDecimal

返回值

一个 Double。 如果所有输入值均为 Null 值,则为 null

示例

queryString = @"SELECT VALUE StDev(product.ListPrice)
    FROM AdventureWorksEntities.Products AS product
    WHERE product.ListPrice > @price";
SELECT VALUE StDev(product.ListPrice) 
FROM AdventureWorksEntities.Products AS product 
WHERE product.ListPrice > @price

StDevP(expression)

返回所有值的总体标准偏差。

参数

Int32Int64DoubleDecimal

返回值

如果所有输入值均为 null 值,则为 Doublenull

示例

queryString = @"SELECT VALUE StDevP(product.ListPrice)
    FROM AdventureWorksEntities.Products AS product
    WHERE product.ListPrice > @price";
SELECT VALUE StDevP(product.ListPrice) 
FROM AdventureWorksEntities.Products AS product 
WHERE product.ListPrice > @price

Sum(expression)

返回非 null 值的总和。

参数

Int32Int64DoubleDecimal

返回值

如果所有输入值均为 null 值,则为 Doublenull

示例

queryString = @"SELECT VALUE Sum(p.ListPrice)
    FROM AdventureWorksEntities.Products as p";
SELECT VALUE Sum(p.ListPrice) 
FROM AdventureWorksEntities.Products AS p 

Var(expression)

返回所有非 Null 值的方差。

参数

Int32Int64DoubleDecimal

返回值

如果所有输入值均为 null 值,则为 Doublenull

示例

queryString = @"SELECT VALUE Var(product.ListPrice)
    FROM AdventureWorksEntities.Products AS product
    WHERE product.ListPrice > @price";
SELECT VALUE Var(product.ListPrice) 
FROM AdventureWorksEntities.Products AS product 
WHERE product.ListPrice > @price

VarP(expression)

返回所有非 Null 值的总体方差。

参数

Int32Int64DoubleDecimal

返回值

如果所有输入值均为 null 值,则为 Doublenull

示例

queryString = @"SELECT VALUE VarP(product.ListPrice)
    FROM AdventureWorksEntities.Products AS product
    WHERE product.ListPrice > @price";
SELECT VALUE VarP(product.ListPrice) 
FROM AdventureWorksEntities.Products AS product 
WHERE product.ListPrice > @price

Microsoft SQL 客户端托管提供程序中提供了等效功能。 有关详细信息,请参阅实体框架函数的 SqlClient

基于集合的聚合

基于集合的聚合(集合函数)针对集合而运行并返回值。 例如,如果 ORDERS 是所有订单的集合,则可以使用以下表达式计算最早的发货日期:

min(select value o.ShipDate from LOB.Orders as o)

将在当前环境名称解析范围内计算基于集合的聚合内的表达式。

基于组的聚合

基于组的聚合将按照 GROUP BY 子句定义的方式对组进行计算。 对于结果中的每个组,将使用每个组中的元素作为聚合计算的输入来计算单独的聚合。 当在 select 表达式中使用 group-by 子句时,在投影或 order-by 子句中只存在分组表达式名称、聚合或常量表达式。

以下示例计算每种产品的平均订购数量:

select p, avg(ol.Quantity) from LOB.OrderLines as ol
  group by ol.Product as p

在 SELECT 表达式中,可以在没有显式 group-by 子句的情况下使用基于组的聚合。 在这种情况下,会将所有元素视为单个组。 这等效于基于常量指定分组。 例如,请看下面的表达式:

select avg(ol.Quantity) from LOB.OrderLines as ol

此表达式等效于以下表达式:

select avg(ol.Quantity) from LOB.OrderLines as ol group by 1

将在 WHERE 子句表达式可见的名称解析范围内计算基于组的聚合中的表达式。

与在 Transact-SQL 中类似,基于组的聚合也可以指定 ALL 或 DISTINCT 修饰符。 如果指定 DISTINCT 修饰符,则将从聚合输入集合中消除重复项,然后计算聚合。 如果指定 ALL 修饰符(或者未指定修饰符),则不执行重复项消除。

请参阅