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.

Siehe auch