Dela via


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, Doubleoch 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.

Se även