Funções canônicas agregadas
Agregações são expressões que reduzem uma série de valores de entrada em, por exemplo, um único valor. Os agregados são normalmente usados em conjunto com a cláusula GROUP BY da expressão SELECT, e há restrições sobre onde eles podem ser usados.
Funções canônicas do Aggregate Entity SQL
A seguir estão as funções canônicas agregadas do Entity SQL.
Média(expressão)
Devolve a média dos valores não nulos.
Argumentos
Um Int32
, Int64
, Double
, e Decimal
.
Valor de retorno
O tipo de , ou null
se todos os valores de expression
entrada são null
valores.
Exemplo
queryString = @"SELECT VALUE AVG(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE AVG(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
BigCount(expressão)
Retorna o tamanho da agregação, incluindo valores nulos e duplicados.
Argumentos
Qualquer tipo.
Valor de retorno
Um Int64
.
Exemplo
queryString = @"SELECT VALUE BigCount(p.ProductID)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE BigCount(p.ProductID)
FROM AdventureWorksEntities.Products AS p
Contagem(expressão)
Retorna o tamanho da agregação, incluindo valores nulos e duplicados.
Argumentos
Qualquer tipo.
Valor de retorno
Um Int32
.
Exemplo
queryString = @"SELECT VALUE Count(p.ProductID)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE Count(p.ProductID)
FROM AdventureWorksEntities.Products AS p
Max(expressão)
Retorna o máximo dos valores não nulos.
Argumentos
A Byte
, Int16
, Int32
, , Int64
, Single
Byte
, Double
, , Decimal
, DateTime
, Time
DateTimeOffset
String
Binary
, .
Valor de retorno
O tipo de , ou null
se todos os valores de expression
entrada são null
valores.
Exemplo
queryString = @"SELECT VALUE MAX(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE MAX(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
Mín(expressão)
Retorna o mínimo dos valores não nulos.
Argumentos
A Byte
, Int16
, Int32
, , Int64
, Single
Byte
, Double
, , Decimal
, DateTime
, Time
DateTimeOffset
String
Binary
, .
Valor de retorno
O tipo de , ou null
se todos os valores de expression
entrada são null
valores.
Exemplo
queryString = @"SELECT VALUE MIN(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE MIN(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
StDev(expressão)
Devolve o desvio padrão dos valores não nulos.
Argumentos
Um Int32
, Int64
, Double
, Decimal
.
Valor de retorno
A Double
. Null
, se todos os valores de entrada forem null
valores.
Exemplo
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(expressão)
Devolve o desvio padrão para a população de todos os valores.
Argumentos
Um Int32
, Int64
, Double
, Decimal
.
Valor de retorno
A Double
, ou null
se todos os valores de entrada forem null
valores.
Exemplo
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
Soma(expressão)
Retorna a soma dos valores não nulos.
Argumentos
Um Int32
, Int64
, Double
, Decimal
.
Valor de retorno
A Double
, ou null
se todos os valores de entrada forem null
valores.
Exemplo
queryString = @"SELECT VALUE Sum(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE Sum(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
Var(expressão)
Retorna a variância de todos os valores não nulos.
Argumentos
Um Int32
, Int64
, Double
, Decimal
.
Valor de retorno
A Double
, ou null
se todos os valores de entrada forem null
valores.
Exemplo
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(expressão)
Devolve a variância para a população de todos os valores não nulos.
Argumentos
Um Int32
, Int64
, Double
, Decimal
.
Valor de retorno
A Double
, ou null
se todos os valores de entrada forem null
valores.
Exemplo
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
Funcionalidade equivalente está disponível no Microsoft SQL Client Managed Provider. Para obter mais informações, consulte SqlClient for Entity Framework Functions.
Agregados baseados em coleções
Os agregados baseados em coleções (funções de coleta) operam em coleções e devolvem um valor. Por exemplo, se ORDERS for uma coleção de todos os pedidos, você poderá calcular a data de envio mais antiga com a seguinte expressão:
min(select value o.ShipDate from LOB.Orders as o)
As expressões dentro de agregados baseados em coleção são avaliadas dentro do escopo atual de resolução de nome ambiente.
Agregados baseados em grupos
Os agregados baseados em grupo são calculados sobre um grupo, conforme definido pela cláusula GROUP BY. Para cada grupo no resultado, um agregado separado é calculado usando os elementos em cada grupo como entrada para o cálculo agregado. Quando uma cláusula group-by é usada em uma expressão select, somente nomes de expressões de agrupamento, agregações ou expressões constantes podem estar presentes na cláusula de projeção ou ordem por.
O exemplo a seguir calcula a quantidade média encomendada para cada produto:
select p, avg(ol.Quantity) from LOB.OrderLines as ol
group by ol.Product as p
É possível ter uma agregação baseada em grupo sem uma cláusula explícita grupo por na expressão SELECT. Neste caso, todos os elementos são tratados como um único grupo. Isso equivale a especificar um agrupamento com base em uma constante. Tomemos, por exemplo, a seguinte expressão:
select avg(ol.Quantity) from LOB.OrderLines as ol
Isto é equivalente ao seguinte:
select avg(ol.Quantity) from LOB.OrderLines as ol group by 1
As expressões dentro da agregação baseada em grupo são avaliadas dentro do escopo de resolução de nome que seria visível para a expressão da cláusula WHERE.
Como no Transact-SQL, as agregações baseadas em grupo também podem especificar um modificador ALL ou DISTINCT . Se o modificador DISTINCT for especificado, as duplicatas serão eliminadas da coleção de entrada agregada, antes que a agregação seja calculada. Se o modificador ALL for especificado (ou se nenhum modificador for especificado), nenhuma eliminação duplicada será executada.