Funções agregadas canônicas
Agregados são as expressões em que reduz uma série de valores de entrada, por exemplo, um único valor. Agregados são normalmente usadas em conjunto com o cláusula GROUP BY de expressão SELECT, e há restrições em onde eles podem ser usados.
Funções canônicas de agregação de Entity SQL
Veja a seguir as funções canônicas de Entity SQL de agregação.
Avg (expressão)
Retorna a média dos valores não anuláveis.
Argumentos
Um Int32
, Int64
, Double
e Decimal
.
Valor Retornado
O tipo de expression
, ou null
se todos os valores de entrada são valores null
.
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 do agregado que inclui valores nulos e duplicados.
Argumentos
Qualquer tipo.
Valor Retornado
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 do agregado que inclui valores nulos e duplicados.
Argumentos
Qualquer tipo.
Valor Retornado
Um Int32
.
Exemplo
queryString = @"SELECT VALUE Count(p.ProductID)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE Count(p.ProductID)
FROM AdventureWorksEntities.Products AS p
Máximo (expressão)
Retorna o máximo dos valores não anuláveis.
Argumentos
Byte
, Int16
, Int32
, Int64
, Byte
, Single
, Double
, Decimal
, DateTime
, DateTimeOffset
, Time
, String
, Binary
.
Valor Retornado
O tipo de expression
, ou null
se todos os valores de entrada são valores null
.
Exemplo
queryString = @"SELECT VALUE MAX(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE MAX(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
Minuto (expressão)
Retorna o mínimo dos valores não anuláveis.
Argumentos
Byte
, Int16
, Int32
, Int64
, Byte
, Single
, Double
, Decimal
, DateTime
, DateTimeOffset
, Time
, String
, Binary
.
Valor Retornado
O tipo de expression
, ou null
se todos os valores de entrada são valores null
.
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)
Retorna o desvio padrão de valores não anuláveis.
Argumentos
Int32
, Int64
, Double
, Decimal
.
Valor Retornado
Uma Double
. Null
, se todos os valores de entrada são valores de null
.
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)
Retorna o desvio padrão para a população de todos os valores.
Argumentos
Int32
, Int64
, Double
, Decimal
.
Valor Retornado
Um Double
ou null
se todos os valores de entrada são valores de null
.
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 anuláveis.
Argumentos
Int32
, Int64
, Double
, Decimal
.
Valor Retornado
Um Double
ou null
se todos os valores de entrada são valores de null
.
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 variação de todos os valores não anuláveis.
Argumentos
Int32
, Int64
, Double
, Decimal
.
Valor Retornado
Um Double
ou null
se todos os valores de entrada são valores de null
.
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)
Retorna a variação para a população de todos os valores não anuláveis.
Argumentos
Int32
, Int64
, Double
, Decimal
.
Valor Retornado
Um Double
ou null
se todos os valores de entrada são valores de null
.
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 provedor gerenciado cliente do Microsoft SQL. Para obter mais informações, consulte SqlClient para funções do Entity Framework.
Agregações baseadas em coleção
Agregados coleção com base (funções de coleção) operam em coleções e retornam um valor. Por exemplo, se os ORDENS são uma coleção de todos os pedidos, você pode calcular a data de enviar a mais recente com a expressão a seguir:
min(select value o.ShipDate from LOB.Orders as o)
Agregados coleções baseadas dentro de expressões são avaliadas dentro do escopo ambiente atual de resolução.
Agregados baseado em grupo
Agregados Grupo- com base são calculadas sobre um grupo como definidas por cláusula GROUP BY. Para cada grupo em resultado, uma agregação separada é calculada usando elementos em cada grupo como entrada ao cálculo agregado. Quando a grupo- pela cláusula é usado em uma expressão selecionar, simplesmente agrupamento nomes de expressão, agregados, ou expressões constantes podem acessar estar presente na projeção ou ordem- pela cláusula.
O exemplo a seguir calcula a média quantidade ordenada 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 grupo- base sem um explícito grupo- pela cláusula SELECT na expressão. Nesse caso, todos os elementos serão tratados como um único grupo. Isso é equivalente a exemplos de especificar um agrupamento com base na constante. Tomada, por exemplo, a expressão a seguir:
select avg(ol.Quantity) from LOB.OrderLines as ol
Isso é equivalente ao seguinte:
select avg(ol.Quantity) from LOB.OrderLines as ol group by 1
As expressões na agregação grupo- base são avaliadas dentro do escopo de resolução que seria visível para a cláusula WHERE expressão.
Como no Transact-SQL, agregados baseados em grupo também podem especificar um modificador ALL ou DISTINCT. Se o modificador DISTINCT é especificado, as duplicatas são eliminadas de coleção de entrada aggregate, antes que a agregação é calculada apenas. Se TODOS OS modificador é especificado (ou se nenhum modificador é especificado), nenhuma descarte duplicado é executada.