Condividi tramite


Funzioni canoniche aggregate

Le aggregazioni sono espressioni che riducono una serie di valori di input in, ad esempio un singolo valore. Le aggregazioni vengono in genere usate insieme alla clausola GROUP BY dell'espressione SELECT e vi sono vincoli sulla posizione in cui possono essere usate.

Funzioni canoniche di Entity SQL aggregate

Di seguito sono riportate le funzioni canoniche di Entity SQL aggregate.

Avg(expression)

Restituisce la media dei valori non nulli.

Argomenti

Un oggetto Int32, Int64, Double, e Decimal.

Valore Restituito

Il tipo di expression, o null se tutti i valori di input sono valori null.

Esempio

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

BigCount(expression)

Restituisce le dimensioni dell'aggregazione, inclusi valori Null e duplicati.

Argomenti

Qualsiasi tipo.

Valore Restituito

Un oggetto Int64.

Esempio

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

Conta(espressione)

Restituisce le dimensioni dell'aggregazione, inclusi valori Null e duplicati.

Argomenti

Qualsiasi tipo.

Valore Restituito

Un oggetto Int32.

Esempio

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

Max(espressione)

Restituisce il valore massimo dei valori non Null.

Argomenti

A Byte, Int16, Int32Int64, , ByteSingle, DoubleDecimalDateTime, . DateTimeOffsetTimeStringBinary

Valore Restituito

Il tipo di expression, o null se tutti i valori di input sono valori null.

Esempio

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

Min(expression)

Restituisce il valore minimo dei valori non Null.

Argomenti

A Byte, Int16, Int32Int64, , ByteSingle, DoubleDecimalDateTime, . DateTimeOffsetTimeStringBinary

Valore Restituito

Il tipo di expression, o null se tutti i valori di input sono valori null.

Esempio

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

StDev(expression)

Restituisce la deviazione standard dei valori non nulli.

Argomenti

Un Int32, Int64, Double, Decimal.

Valore Restituito

Un oggetto Double. Nullse tutti i valori di input sono null valori.

Esempio

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)

Restituisce la deviazione standard per la popolazione di tutti i valori.

Argomenti

Un Int32, Int64, Double, Decimal.

Valore Restituito

Un Double, oppure null se tutti i valori di ingresso sono valori null.

Esempio

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

Somma(expression)

Restituisce la somma dei valori non nulli.

Argomenti

Un Int32, Int64, Double, Decimal.

Valore Restituito

Un Double, oppure null se tutti i valori di ingresso sono valori null.

Esempio

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

Var(expression)

Restituisce la varianza di tutti i valori non Null.

Argomenti

Un Int32, Int64, Double, Decimal.

Valore Restituito

Un Double, oppure null se tutti i valori di ingresso sono valori null.

Esempio

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)

Restituisce la varianza per la popolazione di tutti i valori non Null.

Argomenti

Un Int32, Int64, Double, Decimal.

Valore Restituito

Un Double, oppure null se tutti i valori di ingresso sono valori null.

Esempio

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

Una funzionalità equivalente è disponibile nel provider gestito del client Microsoft SQL. Per altre informazioni, vedere SqlClient per funzioni di Entity Framework.

Aggregazioni basate su raccolte

Le aggregazioni basate su raccolte (funzioni di raccolta) operano sulle raccolte e restituiscono un valore. Ad esempio, se ORDERS è una raccolta di tutti gli ordini, è possibile calcolare la data di spedizione meno recente con l'espressione seguente:

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

Le espressioni all'interno di aggregazioni basate su raccolte vengono valutate all'interno dell'ambito di risoluzione dei nomi di ambiente corrente.

Aggregazioni basate su gruppi

Le aggregazioni basate su gruppo vengono calcolate su un gruppo come definito dalla clausola GROUP BY. Per ogni gruppo nel risultato, un'aggregazione separata viene calcolata usando gli elementi di ogni gruppo come input per il calcolo aggregato. Quando una clausola group-by viene utilizzata in un'espressione select, solo i nomi delle espressioni di raggruppamento, le aggregazioni o le espressioni costanti possono essere presenti nella proiezione o nella clausola order-by.

Nell'esempio seguente viene calcolata la quantità media ordinata per ogni prodotto:

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

È possibile avere un'aggregazione basata su gruppo senza una clausola group-by esplicita nell'espressione SELECT. In questo caso, tutti gli elementi vengono considerati come un singolo gruppo. Equivale a specificare un raggruppamento basato su una costante. Si supponga, ad esempio, l'espressione seguente:

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

Equivale a quanto segue:

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

Le espressioni all'interno dell'aggregazione basata su gruppo vengono valutate all'interno dell'ambito di risoluzione dei nomi che sarebbe visibile all'espressione della clausola WHERE.

Come in Transact-SQL, le aggregazioni basate su gruppo possono anche specificare un modificatore ALL o DISTINCT. Se viene specificato il modificatore DISTINCT, i duplicati vengono eliminati dalla raccolta di input di aggregazione, prima che venga calcolata l'aggregazione. Se viene specificato il modificatore ALL (o se non viene specificato alcun modificatore), non viene eseguita alcuna eliminazione duplicata.

Vedere anche