Nota
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare ad accedere o a cambiare directory.
L'accesso a questa pagina richiede l'autorizzazione. Puoi provare a cambiare directory.
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.