Aggregieren kanonischer Funktionen
Aggregate sind Ausdrücke, die eine Folge von Eingabewerten beispielsweise auf einen einzigen Wert reduzieren. Aggregate werden normalerweise zusammen mit der GROUP BY-Klausel des SELECT-Ausdrucks verwendet, und für ihre Verwendung gelten Einschränkungen.
Kanonische Aggregatfunktionen in Entity SQL
Im Folgenden sind die kanonischen Aggregatfunktionen von Entity SQL aufgeführt.
Avg (Ausdruck)
Gibt den Durchschnitt der von NULL verschiedenen Werte zurück.
Argumente
Int32
, Int64
, Double
und Decimal
.
Rückgabewert
Der Typ von expression
oder null
, wenn alle Eingabewerte null
-Werte sind.
Beispiel
queryString = @"SELECT VALUE AVG(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE AVG(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
BigCount (Ausdruck)
Gibt die Größe des Aggregats, einschließlich null-Werte und doppelter Werte zurück.
Argumente
Beliebiger Typ
Rückgabewert
Int64
.
Beispiel
queryString = @"SELECT VALUE BigCount(p.ProductID)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE BigCount(p.ProductID)
FROM AdventureWorksEntities.Products AS p
Count (Ausdruck)
Gibt die Größe des Aggregats, einschließlich null-Werte und doppelter Werte zurück.
Argumente
Beliebiger Typ
Rückgabewert
Int32
.
Beispiel
queryString = @"SELECT VALUE Count(p.ProductID)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE Count(p.ProductID)
FROM AdventureWorksEntities.Products AS p
Max (Ausdruck)
Gibt den Höchstwert der von null verschiedenen Werte zurück.
Argumente
, , , , , , , , , , , , .
Rückgabewert
Der Typ von expression
oder null
, wenn alle Eingabewerte null
-Werte sind.
Beispiel
queryString = @"SELECT VALUE MAX(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE MAX(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
Min (Ausdruck)
Gibt den geringsten Wert der von NULL verschiedenen Werte zurück.
Argumente
, , , , , , , , , , , , .
Rückgabewert
Der Typ von expression
oder null
, wenn alle Eingabewerte null
-Werte sind.
Beispiel
queryString = @"SELECT VALUE MIN(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE MIN(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
StDev (Ausdruck)
Gibt die Standardabweichung der von NULL verschiedenen Werte zurück.
Argumente
Int32
, Int64
, Double
, Decimal
.
Rückgabewert
einen Double
Null
, wenn alle Eingabewerte null
-Werte sind.
Beispiel
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 (Ausdruck)
Gibt die Standardabweichung zum Ausfüllen aller Werte zurück.
Argumente
Int32
, Int64
, Double
, Decimal
.
Rückgabewert
Double
oder null
, wenn alle Eingabewerte null
-Werte sind.
Beispiel
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 (Ausdruck)
Gibt die Summe der von null verschiedenen Werte zurück.
Argumente
Int32
, Int64
, Double
, Decimal
.
Rückgabewert
Double
oder null
, wenn alle Eingabewerte null
-Werte sind.
Beispiel
queryString = @"SELECT VALUE Sum(p.ListPrice)
FROM AdventureWorksEntities.Products as p";
SELECT VALUE Sum(p.ListPrice)
FROM AdventureWorksEntities.Products AS p
Var (Ausdruck)
Gibt die Varianz aller Werte zurück, die keine Null-Werte sind.
Argumente
Int32
, Int64
, Double
, Decimal
.
Rückgabewert
Double
oder null
, wenn alle Eingabewerte null
-Werte sind.
Beispiel
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 (Ausdruck)
Gibt die Varianz für die Auffüllung aller Werte zurück, die keine Null-Werte sind.
Argumente
Int32
, Int64
, Double
, Decimal
.
Rückgabewert
Double
oder null
, wenn alle Eingabewerte null
-Werte sind.
Beispiel
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
Entsprechende Funktionen sind für den verwalteten Anbieter des Microsoft SQL-Clients verfügbar. Weitere Informationen finden Sie unter SqlClient für Entity Framework-Funktionen.
Auflistungsbasierte Aggregate
Auflistungsbasierte Aggregate (Auflistungsfunktionen) verarbeiten Auflistungen und geben einen Wert zurück. Wenn beispielsweise ORDERS eine Auflistung aller Bestellungen ist, können Sie das früheste Lieferdatum mit dem folgenden Ausdruck berechnen:
min(select value o.ShipDate from LOB.Orders as o)
Ausdrücke in auflistungsbasierten Aggregaten werden innerhalb des aktuellen umgebenden Namensauflösungsbereichs ausgewertet.
Gruppenbasierte Aggregate
Gruppenbasierte Aggregate werden für eine Gruppe berechnet, die mit einer GROUP BY-Klausel definiert wurde. Für jede Gruppe im Ergebnis wird ein separates Aggregat berechnet, indem die Elemente in jeder Gruppe als Eingabe zur Aggregatberechnung verwendet werden. Wenn eine GROUP BY-Klausel in einem SELECT-Ausdruck verwendet wird, können sich in der Projektion oder ORDER BY-Klausel nur die Namen von Gruppierungsausdrücken, Aggregate oder konstante Ausdrücke befinden.
Im folgenden Beispiel wird die durchschnittlich bestellte Anzahl für jedes Produkt berechnet:
select p, avg(ol.Quantity) from LOB.OrderLines as ol
group by ol.Product as p
Gruppenbasierte Aggregate können im SELECT-Ausdruck ohne explizite GROUP BY-Klausel vorkommen. In diesem Fall werden alle Elemente als eine einzelne Gruppe behandelt. Dies entspricht dem Fall, dass eine Gruppierung auf der Grundlage einer Konstante angegeben wird. Betrachten Sie beispielsweise folgenden Ausdruck:
select avg(ol.Quantity) from LOB.OrderLines as ol
Dieser Ausdruck ist äquivalent zu Folgendem:
select avg(ol.Quantity) from LOB.OrderLines as ol group by 1
Ausdrücke in gruppenbasierten Aggregaten werden innerhalb des Namensauflösungsbereichs ausgewertet, der für den WHERE-Klauselausdruck sichtbar wäre.
Gruppenbasierte Aggregate können wie in Transact-SQL auch einen ALL-Modifizierer oder einen DISTINCT-Modifizierer angeben. Wenn der DISTINCT-Modifizierer angegeben ist, werden Duplikate vor der Berechnung des Aggregats aus der Aggregateingabeauflistung gelöscht. Wenn der ALL-Modifizierer oder kein Modifizierer angegeben wird, werden Duplikate nicht gelöscht.