Funciones canónicas de agregadoAggregate Canonical Functions

Los agregados son expresiones que reducen una serie de valores de entrada a un único valor, por ejemplo.Aggregates are expressions that reduce a series of input values into, for example, a single value. Los agregados suelen usarse junto con la cláusula GROUP BY de la expresión SELECT y hay restricciones con respecto a dónde se pueden usar.Aggregates are normally used in conjunction with the GROUP BY clause of the SELECT expression, and there are constraints on where they can be used.

Funciones canónicas de agregado Entity SQLAggregate Entity SQL canonical functions

A continuación se muestran las funciones canónicas Entity SQL agregadas.The following are the aggregate Entity SQL canonical functions.

Avg(expresión)Avg(expression)

Devuelve el promedio de los valores no NULL.Returns the average of the non-null values.

ArgumentosArguments

Int32 ,Int64, Y .Decimal DoubleAn Int32, Int64, Double, and Decimal.

Valor devueltoReturn Value

El tipo de expression, o null si todos los valores de null entrada son valores.The type of expression, or null if all input values are null values.

EjemploExample

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

BigCount(expresión)BigCount(expression)

Devuelve el tamaño del agregado, incluyendo los valores NULL y los duplicados.Returns the size of the aggregate including null and duplicate values.

ArgumentosArguments

Cualquier tipo.Any type.

Valor devueltoReturn Value

Una clase Int64.An Int64.

EjemploExample

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

Count(expresión)Count(expression)

Devuelve el tamaño del agregado, incluyendo los valores NULL y los duplicados.Returns the size of the aggregate including null and duplicate values.

ArgumentosArguments

Cualquier tipo.Any type.

Valor devueltoReturn Value

Una clase Int32.An Int32.

EjemploExample

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

Max(expresión)Max(expression)

Devuelve el máximo de los valores no NULL.Returns the maximum of the non-null values.

ArgumentosArguments

A Byte, Int16, Int32, Int64, Byte, Single, Double, Decimal, DateTime, DateTimeOffset, Time, String, Binary.A Byte, Int16, Int32, Int64, Byte, Single, Double, Decimal, DateTime, DateTimeOffset, Time, String, Binary.

Valor devueltoReturn Value

El tipo de expression, o null si todos los valores de null entrada son valores.The type of expression, or null if all input values are null values.

EjemploExample

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

Min(expresión)Min(expression)

Devuelve el mínimo de los valores no NULL.Returns the minimum of the non-null values.

ArgumentosArguments

A Byte, Int16, Int32, Int64, Byte, Single, Double, Decimal, DateTime, DateTimeOffset, Time, String, Binary.A Byte, Int16, Int32, Int64, Byte, Single, Double, Decimal, DateTime, DateTimeOffset, Time, String, Binary.

Valor devueltoReturn Value

El tipo de expression, o null si todos los valores de null entrada son valores.The type of expression, or null if all input values are null values.

EjemploExample

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

StDev(expresión)StDev(expression)

Devuelve la desviación estándar de los valores no NULL.Returns the standard deviation of the non-null values.

ArgumentosArguments

Valor de tipo Int32, Int64, Double o Decimal.An Int32, Int64, Double, Decimal.

Valor devueltoReturn Value

Objeto Double.A Double. Null si los valores de entrada son null.Null, if all input values are null values.

EjemploExample

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(expresión)StDevP(expression)

Devuelve la desviación estándar de la población para todos los valores.Returns the standard deviation for the population of all values.

ArgumentosArguments

Valor de tipo Int32, Int64, Double o Decimal.An Int32, Int64, Double, Decimal.

Valor devueltoReturn Value

O si todos los valores de entrada son null valores. null DoubleA Double, or null if all input values are null values.

EjemploExample

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(expresión)Sum(expression)

Devuelve la suma de los valores no NULL.Returns the sum of the non-null values.

ArgumentosArguments

Valor de tipo Int32, Int64, Double o Decimal.An Int32, Int64, Double, Decimal.

Valor devueltoReturn Value

O si todos los valores de entrada son null valores. null DoubleA Double, or null if all input values are null values.

EjemploExample

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

Var(expresión)Var(expression)

Devuelve la varianza de todos los valores no nulos.Returns the variance of all non-null values.

ArgumentosArguments

Valor de tipo Int32, Int64, Double o Decimal.An Int32, Int64, Double, Decimal.

Valor devueltoReturn Value

O si todos los valores de entrada son null valores. null DoubleA Double, or null if all input values are null values.

EjemploExample

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(expresión)VarP(expression)

Devuelve la varianza de la población para todos los valores no nulos.Returns the variance for the population of all non-null values.

ArgumentosArguments

Valor de tipo Int32, Int64, Double o Decimal.An Int32, Int64, Double, Decimal.

Valor devueltoReturn Value

O si todos los valores de entrada son null valores. null DoubleA Double, or null if all input values are null values.

EjemploExample

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

La funcionalidad equivalente está disponible en el proveedor administrado de Microsoft SQL Client.Equivalent functionality is available in the Microsoft SQL Client Managed Provider. Para obtener más información, vea SqlClient para funciones de Entity Framework.For more information, see SqlClient for Entity Framework Functions.

Agregados basados en una colecciónCollection-based aggregates

Los agregados basados en una colección (funciones de colección) operan en las colecciones y devuelven un valor.Collection-based aggregates (collection functions) operate on collections and return a value. Por ejemplo, si ORDERs es una colección de todos los pedidos, puede calcular la fecha de envío más temprana con la expresión siguiente:For example if ORDERS is a collection of all orders, you can calculate the earliest ship date with the following expression:

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

Las expresiones que se encuentran dentro de agregados basados en una colección se evalúan dentro del ámbito actual de la resolución de nombres.Expressions inside collection-based aggregates are evaluated within the current ambient name-resolution scope.

Agregados basados en gruposGroup-based aggregates

Los agregados basados en un grupo se calculan sobre un grupo según define la cláusula GROUP BY.Group-based aggregates are calculated over a group as defined by the GROUP BY clause. Para cada grupo del resultado, se calcula un agregado diferente utilizando los elementos de cada grupo como entrada del cálculo del agregado.For each group in the result, a separate aggregate is calculated by using the elements in each group as input to the aggregate calculation. Cuando se usa una cláusula GROUP-BY en una expresión SELECT, solo se pueden presentar en la cláusula ORDER-BY o de la proyección los nombres de la expresión de agrupamiento, los agregados o las expresiones constantes.When a group-by clause is used in a select expression, only grouping expression names, aggregates, or constant expressions can be present in the projection or order-by clause.

En el ejemplo siguiente se calcula la cantidad promedio pedida de cada producto:The following example calculates the average quantity ordered for each product:

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

Es posible tener un agregado basado en un grupo sin una cláusula Group-by explícita en la expresión SELECT.It's possible to have a group-based aggregate without an explicit group-by clause in the SELECT expression. En este caso, todos los elementos se tratan como un solo grupo.In this case, all elements are treated as a single group. Esto es equivalente a especificar una agrupación basada en una constante.This is equivalent of specifying a grouping based on a constant. Tome como ejemplo la siguiente expresión:Take, for example, the following expression:

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

Es equivalente a la siguiente:This is equivalent to the following:

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

Las expresiones que se encuentran dentro del agregado basado en un grupo se evalúan dentro del ámbito de resolución de nombres que sería visible para la expresión de la cláusula WHERE.Expressions inside the group-based aggregate are evaluated within the name-resolution scope that would be visible to the WHERE clause expression.

Como en Transact-SQL, los agregados basados en grupos también pueden especificar un modificador ALL o DISTINCt.As in Transact-SQL, group-based aggregates can also specify an ALL or DISTINCT modifier. Si se especifica el modificador DISTINCT, los duplicados se eliminan de la colección de entrada del agregado, antes de calcularlo.If the DISTINCT modifier is specified, duplicates are eliminated from the aggregate input collection, before the aggregate is computed. Si se especifica el modificador ALL o no se especifica ningún modificador, no se lleva a cabo la eliminación de los duplicados.If the ALL modifier is specified (or if no modifier is specified), no duplicate elimination is performed.

Vea tambiénSee also