Aggregerade kanoniska funktioner
Aggregeringar är uttryck som minskar en serie indatavärden till till exempel ett enda värde. Aggregeringar används normalt tillsammans med GROUP BY-satsen i SELECT-uttrycket, och det finns begränsningar för var de kan användas.
Aggregera sql-kanoniska funktioner för entitet
Följande är de aggregerade sql-kanoniska funktionerna för entitet.
Genomsnittlig(uttryck)
Returnerar medelvärdet av värdena som inte är null.
Argument
En Int32
, Int64
, Double
och Decimal
.
Returvärde
Typen av expression
, eller null
om alla indatavärden är null
värden.
Exempel
queryString = @"SELECT VALUE AVG(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE AVG(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
BigCount(uttryck)
Returnerar storleken på aggregeringen, inklusive null- och duplicerade värden.
Argument
Vilken typ som helst.
Returvärde
En Int64
.
Exempel
queryString = @"SELECT VALUE BigCount(p.ProductID)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE BigCount(p.ProductID)
FROM AdventureWorksEntities.Products AS p
Count(expression)
Returnerar storleken på aggregeringen, inklusive null- och duplicerade värden.
Argument
Vilken typ som helst.
Returvärde
En Int32
.
Exempel
queryString = @"SELECT VALUE Count(p.ProductID)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE Count(p.ProductID)
FROM AdventureWorksEntities.Products AS p
Max(expression)
Returnerar maximalt antal värden som inte är null.
Argument
A Byte
, Int16
, Int32
, Int64
, Byte
, Single
, Double
, Decimal
, DateTime
, , DateTimeOffset
, Time
, String
, . Binary
Returvärde
Typen av expression
, eller null
om alla indatavärden är null
värden.
Exempel
queryString = @"SELECT VALUE MAX(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE MAX(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
Min(expression)
Returnerar minimivärdet för värden som inte är null.
Argument
A Byte
, Int16
, Int32
, Int64
, Byte
, Single
, Double
, Decimal
, DateTime
, , DateTimeOffset
, Time
, String
, . Binary
Returvärde
Typen av expression
, eller null
om alla indatavärden är null
värden.
Exempel
queryString = @"SELECT VALUE MIN(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE MIN(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
StDev(uttryck)
Returnerar standardavvikelsen för värdena som inte är null.
Argument
En Int32
, Int64
, Double
, Decimal
.
Returvärde
En Double
. Null
, om alla indatavärden är null
värden.
Exempel
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(uttryck)
Returnerar standardavvikelsen för populationen av alla värden.
Argument
En Int32
, Int64
, Double
, Decimal
.
Returvärde
En Double
, eller null
om alla indatavärden är null
värden.
Exempel
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)
Returnerar summan av värdena som inte är null.
Argument
En Int32
, Int64
, Double
, Decimal
.
Returvärde
En Double
, eller null
om alla indatavärden är null
värden.
Exempel
queryString = @"SELECT VALUE Sum(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE Sum(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
Var(expression)
Returnerar variansen för alla värden som inte är null.
Argument
En Int32
, Int64
, Double
, Decimal
.
Returvärde
En Double
, eller null
om alla indatavärden är null
värden.
Exempel
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(uttryck)
Returnerar variansen för populationen för alla värden som inte är null.
Argument
En Int32
, Int64
, Double
, Decimal
.
Returvärde
En Double
, eller null
om alla indatavärden är null
värden.
Exempel
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
Motsvarande funktioner är tillgängliga i Microsoft SQL Client Managed Provider. Mer information finns i SqlClient för Entity Framework Functions.
Samlingsbaserade aggregeringar
Samlingsbaserade aggregeringar (samlingsfunktioner) fungerar på samlingar och returnerar ett värde. Om ORDERS till exempel är en samling av alla beställningar kan du beräkna det tidigaste leveransdatumet med följande uttryck:
min(select value o.ShipDate from LOB.Orders as o)
Uttryck i samlingsbaserade aggregeringar utvärderas inom det aktuella omfånget för omgivande namnmatchning.
Gruppbaserade aggregeringar
Gruppbaserade aggregeringar beräknas över en grupp enligt definitionen i GROUP BY-satsen. För varje grupp i resultatet beräknas en separat aggregering med hjälp av elementen i varje grupp som indata till den aggregerade beräkningen. När en grupp-by-sats används i ett select-uttryck kan endast gruppering av uttrycksnamn, aggregeringar eller konstanta uttryck finnas i projektionen eller order-by-satsen.
I följande exempel beräknas den genomsnittliga kvantiteten som sorteras för varje produkt:
select p, avg(ol.Quantity) from LOB.OrderLines as ol
group by ol.Product as p
Det går att ha en gruppbaserad aggregering utan en explicit group-by-sats i SELECT-uttrycket. I det här fallet behandlas alla element som en enda grupp. Detta motsvarar att ange en gruppering baserat på en konstant. Ta till exempel följande uttryck:
select avg(ol.Quantity) from LOB.OrderLines as ol
Detta motsvarar följande:
select avg(ol.Quantity) from LOB.OrderLines as ol group by 1
Uttryck i den gruppbaserade aggregeringen utvärderas inom namnmatchningsomfånget som skulle vara synligt för WHERE-satsuttrycket.
Precis som i Transact-SQL kan gruppbaserade aggregeringar också ange en ALL- eller DISTINCT-modifierare. Om DISTINCT-modifieraren har angetts elimineras dubbletter från samlingen med aggregerade indata innan aggregeringen beräknas. Om ALL-modifieraren har angetts (eller om ingen modifierare har angetts) utförs ingen duplicerad eliminering.