Compartir a través de


Funciones canónicas de agregado

Los agregados son expresiones que reducen una serie de valores de entrada en, por ejemplo, un valor único. Normalmente, los agregados se usan junto con la cláusula GROUP BY de la expresión SELECT y hay restricciones en las que se pueden usar.

Funciones canónicas de Entity SQL agregadas

A continuación se muestran las funciones canónicas de Entity SQL agregadas.

Avg(expresión)

Devuelve el promedio de los valores que no son NULL.

Argumentos

Un Int32, Int64, Double y Decimal.

Valor Devuelto

Tipo de expression, o null si todos los valores de entrada son valores null.

Ejemplo

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

BigCount(expression)

Devuelve el tamaño del agregado, incluidos los valores NULL y duplicados.

Argumentos

Cualquier tipo.

Valor Devuelto

Un Int64.

Ejemplo

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

Count(expresión)

Devuelve el tamaño del agregado, incluidos los valores NULL y duplicados.

Argumentos

Cualquier tipo.

Valor Devuelto

Un Int32.

Ejemplo

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

Max(expresión)

Devuelve el máximo de los valores que no son NULL.

Argumentos

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

Valor Devuelto

Tipo de expression, o null si todos los valores de entrada son valores null.

Ejemplo

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

Min(expresión)

Devuelve el mínimo de los valores que no son NULL.

Argumentos

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

Valor Devuelto

Tipo de expression, o null si todos los valores de entrada son valores null.

Ejemplo

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

StDev(expression)

Devuelve la desviación estándar de los valores que no son NULL.

Argumentos

Valor de tipo Int32, Int64, Double o Decimal.

Valor Devuelto

Una Double. Null, si todos los valores de entrada son null valores.

Ejemplo

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)

Devuelve la desviación estándar para la población de todos los valores.

Argumentos

Valor de tipo Int32, Int64, Double o Decimal.

Valor Devuelto

Un Double, o un null si todos los valores de entrada son null.

Ejemplo

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)

Devuelve la suma de los valores que no son NULL.

Argumentos

Valor de tipo Int32, Int64, Double o Decimal.

Valor Devuelto

Un Double, o un null si todos los valores de entrada son null.

Ejemplo

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

Var(expresión)

Devuelve la varianza de todos los valores que no son NULL.

Argumentos

Valor de tipo Int32, Int64, Double o Decimal.

Valor Devuelto

Un Double, o un null si todos los valores de entrada son null.

Ejemplo

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)

Devuelve la varianza de la población de todos los valores no NULL.

Argumentos

Valor de tipo Int32, Int64, Double o Decimal.

Valor Devuelto

Un Double, o un null si todos los valores de entrada son null.

Ejemplo

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. Para obtener más información, consulte SqlClient para funciones de Entity Framework.

Agregados basados en colecciones

Los agregados basados en colecciones (funciones de colección) funcionan en colecciones y devuelven un valor. Por ejemplo, si ORDERS es una colección de todos los pedidos, puede calcular la fecha de envío más antigua con la siguiente expresión:

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

Las expresiones dentro de agregados basados en colecciones se evalúan dentro del ámbito determinado por el entorno actual de resolución de nombres.

Agregados basados en grupos

Los agregados basados en grupos se calculan a través de un grupo tal como se define en la cláusula GROUP BY. Para cada grupo del resultado, se calcula un agregado independiente mediante el uso de los elementos de cada grupo como entrada para el cálculo agregado. 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.

En el ejemplo siguiente se calcula la cantidad media ordenada para cada producto:

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

Es posible tener un agregado basado en grupo sin una cláusula group-by explícita en la expresión SELECT. En este caso, todos los elementos se tratan como un único grupo. Esto equivale a especificar una agrupación basada en una constante. Tome, por ejemplo, la siguiente expresión:

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

Esto equivale a lo siguiente:

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.

Como en Transact-SQL, los agregados basados en grupos también pueden especificar un modificador ALL o DISTINCT. Si se especifica el modificador DISTINCT, los duplicados se eliminan de la colección de entrada agregada, antes de que se calcule el agregado. Si se especifica el modificador ALL (o si no se especifica ningún modificador), no se realiza ninguna eliminación duplicada.

Consulte también