Aggregieren von kanonischen Funktionen (Entity SQL)

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.

In der folgenden Tabelle sind die kanonischen Entity SQL -Aggregatfunktionen aufgeführt.

Funktion Beschreibung

Avg( expression )

Gibt den Durchschnitt der von NULL verschiedenen Werte zurück.

Argumente

Ein Int32, Int64, Double und Decimal.

Rückgabewert

Der Typ des expression. Null, wenn alle Eingabewerte NULL-Werte sind.

Beispiel

SELECT VALUE AVG(p.ListPrice) FROM AdventureWorksEntities.Products as p 

BigCount( expression )

Gibt die Größe des Aggregats, einschließlich null-Werte und doppelter Werte zurück.

Argumente

Beliebiger Typ.

Rückgabewert

Ein Int64.

Beispiel

SELECT VALUE BigCount(p.ProductID) FROM AdventureWorksEntities.Products as p 

Count( expression )

Gibt die Größe des Aggregats, einschließlich null-Werte und doppelter Werte zurück.

Argumente

Beliebiger Typ.

Rückgabewert

Ein Int32.

Beispiel

SELECT VALUE Count(p.ProductID) FROM AdventureWorksEntities.Products as p 

Max( expression )

Gibt den Höchstwert der von null verschiedenen Werte zurück.

Argumente

Byte, Int16, Int32, Int64, Byte, Single, Double, Decimal, DateTime, DateTimeOffset, Time, String, Binary.

Rückgabewert

Der Typ des expression. Null, wenn alle Eingabewerte NULL-Werte sind.

Beispiel

SELECT VALUE MAX(p.ListPrice) FROM AdventureWorksEntities.Products as p 

Min( expression )

Gibt den geringsten Wert der von null verschiedenen Werte zurück.

Argumente

ByteInt16, Int32, Int64, Byte, Single, Double, Decimal, DateTime, DateTimeOffset, Time, String, Binary, .

Rückgabewert

Der Typ des expression. Null, wenn alle Eingabewerte NULL-Werte sind.

Beispiel

SELECT VALUE MIN(p.ListPrice) FROM AdventureWorksEntities.Products as p 

StDev( expression )

Gibt die Standardabweichung der von NULL verschiedenen Werte zurück.

Argumente

Int32, Int64, Double, Decimal.

Rückgabewert

Double Null, wenn alle Eingabewerte NULL-Werte sind.

Beispiel

SELECT VALUE StDev(product.ListPrice) 
FROM AdventureWorksEntities.Products AS product 
where product.ListPrice > @price

StDevP( expression )

Gibt die Standardabweichung zum Ausfüllen aller Werte zurück.

Argumente

Int32, Int64, Double, Decimal.

Rückgabewert

Double Null, wenn alle Eingabewerte NULL-Werte sind.

Beispiel

SELECT VALUE StDevP(product.ListPrice) 
FROM AdventureWorksEntities.Products AS product 
where product.ListPrice > @price

Sum( expression )

Gibt die Summe der von null verschiedenen Werte zurück.

Argumente

Int32, Int64, Double, Decimal.

Rückgabewert

Double Null, wenn alle Eingabewerte NULL-Werte sind.

Beispiel

SELECT VALUE Sum(p.ListPrice) FROM AdventureWorksEntities.Products as p 

Var( expression )

Gibt die Varianz aller Werte zurück, die keine Null-Werte sind.

Argumente

Int32, Int64, Double, Decimal.

Rückgabewert

Ein Double-Wert. Null, wenn alle Eingabewerte NULL-Werte sind.

Beispiel

SELECT VALUE Var(product.ListPrice) 
FROM AdventureWorksEntities.Products AS product 
WHERE product.ListPrice > @price

VarP( expression )

Gibt die Varianz für die Auffüllung aller Werte zurück, die keine Null-Werte sind.

Argumente

Int32, Int64, Double, Decimal.

Rückgabewert

Ein Double-Wert. Null, wenn alle Eingabewerte NULL-Werte sind.

Beispiel

SELECT VALUE VarP(product.ListPrice) 
FROM AdventureWorksEntities.Products AS product 
WHERE product.ListPrice > @price

Entsprechende Funktionalität ist für den verwalteten Anbieter des Microsoft SQL-Clients verfügbar. Weitere Informationen finden Sie unter .NET Framework-Datenanbieter für SQL Server (SqlClient) für die 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

Konzepte

Kanonische Funktionen (Entity SQL)