Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Ein Aggregat ist ein Sprachkonstrukt, das eine Auflistung als Teil eines Gruppenvorgangs zu einem Skalar zusammenfasst. Entitäts-SQL-Aggregate sind in zwei Formen vorhanden:
Entitäts-SQL-Auflistungsfunktionen, die an einer beliebigen Stelle in einem Ausdruck verwendet werden können. Dazu gehören die Verwendung von Aggregatfunktionen in Projektionen und Prädikaten, die auf Sammlungen reagieren. Sammlungsfunktionen sind der bevorzugte Modus zum Angeben von Aggregaten in Entity SQL.
Gruppieren Sie Aggregate in Abfrageausdrücken, die über eine GROUP BY-Klausel verfügen. Wie bei Transact-SQL akzeptieren Gruppenaggregate DISTINCT und ALL als Modifizierer für die Aggregateingabe.
Entität SQL versucht zunächst, einen Ausdruck als Sammlungsfunktion zu interpretieren und wenn sich der Ausdruck im Kontext eines SELECT-Ausdrucks befindet, interpretiert er ihn als Gruppenaggregat.
Entity SQL definiert einen speziellen Aggregatoperator namens GROUPPARTITION. Mit diesem Operator können Sie einen Verweis auf den gruppierten Eingabesatz abrufen. Dies ermöglicht erweiterte Gruppierungsabfragen, bei denen die Ergebnisse der GROUP BY-Klausel an anderen Stellen als Gruppenaggregat- oder Sammlungsfunktionen verwendet werden können.
Auflistungsfunktionen
Sammlungsfunktionen werden für Sammlungen ausgeführt und geben einen skalaren Wert zurück. Wenn es sich beispielsweise orders um eine Auflistung aller ordershandelt, können Sie das früheste Lieferdatum mit dem folgenden Ausdruck berechnen:
min(select value o.ShipDate from LOB.Orders as o)
Gruppenaggregate
Gruppenaggregate werden über ein Gruppenergebnis berechnet, wie durch die GROUP BY-Klausel definiert. Die GROUP BY-Klausel partitioniert Daten in Gruppen. Für jede Gruppe im Ergebnis wird die Aggregatfunktion angewendet, und ein separates Aggregat wird mithilfe der Elemente in jeder Gruppe als Eingaben für die Aggregatberechnung berechnet. Wenn eine GROUP BY-Klausel in einem SELECT-Ausdruck verwendet wird, können nur Gruppierungsausdrücke, Aggregate oder Konstantenausdrücke in der Projektions-, HAVING- oder ORDER BY-Klausel vorhanden sein.
Im folgenden Beispiel wird die für jedes Produkt bestellte durchschnittliche Menge berechnet.
select p, avg(ol.Quantity) from LOB.OrderLines as ol
group by ol.Product as p
Es ist möglich, ein Gruppenaggregat ohne eine explizite GROUP BY-Klausel im SELECT-Ausdruck zu verwenden. Alle Elemente werden als einzelne Gruppe behandelt, die dem Fall entspricht, eine Gruppierung basierend auf einer Konstante anzugeben.
select avg(ol.Quantity) from LOB.OrderLines as ol
select avg(ol.Quantity) from LOB.OrderLines as ol group by 1
Ausdrücke, die in der GROUP BY-Klausel verwendet werden, werden mithilfe desselben Bereichs namensauflösung ausgewertet, der für den WHERE-Klauselausdruck sichtbar wäre.