Partager via


Fonctions d'agrégation canoniques

Les agrégats sont des expressions qui réduisent une série de valeurs d’entrée dans, par exemple, une valeur unique. Les agrégats sont normalement utilisés conjointement avec la clause GROUP BY de l’expression SELECT, et il existe des contraintes sur l’endroit où elles peuvent être utilisées.

Fonctions canoniques Entity SQL d’agrégation

Voici les fonctions canoniques Entity SQL agrégées.

Avg(expression)

Retourne la moyenne des valeurs non nulles.

Arguments

An Int32, Int64, Double, et Decimal.

valeur de retour

Type de expression, ou null si toutes les valeurs d’entrée sont null.

Exemple

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

BigCount(expression)

Retourne la taille de l’agrégat, y compris les valeurs null et dupliquées.

Arguments

N’importe quel type.

valeur de retour

Élément Int64.

Exemple

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

Count(expression)

Retourne la taille de l’agrégat, y compris les valeurs null et dupliquées.

Arguments

N’importe quel type.

valeur de retour

Élément Int32.

Exemple

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

Max(expression)

Retourne le maximum des valeurs non nulles.

Arguments

A Byte, Int16Int32DoubleDecimalInt64DateTimeOffsetByteStringSingleTimeDateTimeBinary.

valeur de retour

Type de expression, ou null si toutes les valeurs d’entrée sont null.

Exemple

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

Min(expression)

Retourne le minimum des valeurs non nulles.

Arguments

A Byte, Int16Int32DoubleDecimalInt64DateTimeOffsetByteStringSingleTimeDateTimeBinary.

valeur de retour

Type de expression, ou null si toutes les valeurs d’entrée sont null.

Exemple

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

StDev(expression)

Retourne l’écart type des valeurs non nulles.

Arguments

Int32, Int64, Double, Decimal.

valeur de retour

Double. Null, si toutes les valeurs d’entrée sont null.

Exemple

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)

Retourne l’écart type pour la population de toutes les valeurs.

Arguments

Int32, Int64, Double, Decimal.

valeur de retour

A Double, ou null si toutes les valeurs d’entrée sont null.

Exemple

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)

Retourner la somme des valeurs non-nulles.

Arguments

Int32, Int64, Double, Decimal.

valeur de retour

A Double, ou null si toutes les valeurs d’entrée sont null.

Exemple

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

Var(expression)

Retourne la variance de toutes les valeurs non null.

Arguments

Int32, Int64, Double, Decimal.

valeur de retour

A Double, ou null si toutes les valeurs d’entrée sont null.

Exemple

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)

Retourne la variance pour le remplissage de toutes les valeurs non-Null.

Arguments

Int32, Int64, Double, Decimal.

valeur de retour

A Double, ou null si toutes les valeurs d’entrée sont null.

Exemple

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

Des fonctionnalités équivalentes sont disponibles dans le fournisseur managé Client Microsoft SQL. Pour plus d’informations, consultez Fonctions SqlClient pour l’Entity Framework.

Agrégats basés sur des collections

Les agrégats basés sur des collections (fonctions de collection) fonctionnent sur des collections et retournent une valeur. Par exemple, si ORDERS est une collection de toutes les commandes, vous pouvez calculer la date d’expédition la plus ancienne avec l’expression suivante :

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

Les expressions figurant dans des agrégats basés sur des collections sont évalués dans la résolution de noms de portée ambiante actuelle.

Agrégats basés sur des groupes

Les agrégats basés sur des groupes sont calculés sur un groupe tel que défini par la clause GROUP BY. Pour chaque groupe du résultat, un agrégat distinct est calculé à l’aide des éléments de chaque groupe comme entrée dans le calcul d’agrégation. Lorsqu'une clause group-by est utilisée dans une expression select, seuls des noms d'expressions de regroupement, des agrégats ou des expressions constantes peuvent figurer dans la projection ou la clause order-by.

L’exemple suivant calcule la quantité moyenne ordonnée pour chaque produit :

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

Il est possible d’avoir un agrégat basé sur un groupe sans clause group-by explicite dans l’expression SELECT. Dans ce cas, tous les éléments sont traités comme un seul groupe. Cela équivaut à spécifier un regroupement basé sur une constante. Prenons, par exemple, l’expression suivante :

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

Cela équivaut à ce qui suit :

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

Les expressions figurant dans des agrégats basés sur des groupes sont évalués dans la résolution de noms de portée qui serait visible pour l’expression de la clause WHERE.

Comme dans Transact-SQL, les agrégats basés sur des groupes peuvent également spécifier un modificateur ALL ou DISTINCT. Si le modificateur DISTINCT est spécifié, les doublons sont éliminés de la collection d’entrée d’agrégation, avant que l’agrégat ne soit calculé. Si le modificateur ALL est spécifié (ou si aucun modificateur n’est spécifié), aucune élimination dupliquée n’est effectuée.

Voir aussi