Erweiterte SELECT-Anweisung kombiniert mit Datenaggregationsfunktionen
- 24-07-2022
- Toanngo92
- 0 Comments
Mục lục
Datenaggregationsfunktionen
Manchmal bitten Entwickler auch darum, Analysen für Zeilen durchzuführen, z. B. das Zählen von Zeilen, das Erfüllen bestimmter Kriterien oder das Zusammenfassen der Verkäufe für alle Bestellungen. Die Aggregatfunktion ermöglicht dies.
Da Aggregatfunktionen einen einzelnen Wert zurückgeben, können sie in SELECT-Zuständen verwendet werden, in denen ein Ausdruck verwendet wird, wie z. B. SELECT-, HAVING- und ORDER BY-Klauseln. Aggregatfunktionen ignorieren NULLEN, außer wenn COUNT(*) verwendet wird.
Aggregatfunktionen in der SELECT-Liste haben keine Spaltennamen, Sie können die AS-Klausel verwenden, um Spaltennamen festzulegen.
Die Aggregatfunktion ist eine SELECT-Klausel, die auf alle Zeilen angewendet wird, die an die SELECT-Phase übergeben werden. Ohne die GROUP BY-Klausel werden alle Zeilen zusammengefasst.
Einige Aggregatfunktionen:
Funktionsname | Syntax _ | Beschreiben |
Durchschn | AVG(<Ausdruck>) | Berechnen Sie den Durchschnitt aller Nicht-NULL-Werte in der Spalte |
COUNT oder COUNT_BIG | COUNT(*) oder COUNT(<Ausdruck>) | Wenn (*) verwendet wird, zählt diese Funktion alle Zeilen, einschließlich derer mit NULL-Werten. Die Funktion zählt alle Zeilen, auch die mit NULLen. Die Funktion gibt die Anzahl der Nicht-NULL-Zeilen für die Spalte zurück, wenn eine Spalte als angegeben ist. Der Rückgabewert der COUNT-Funktion ist ein Int. Der Rückgabewert von COUNT_BIG ist big_int |
max | MAX(<Ausdruck>) | Gibt die größte Zahl, das neueste Datum/die neueste Uhrzeit oder die Zeichenfolge des letzten Vorkommens zurück. |
MINDEST | MIN(<Ausdruck>) | Gibt die kleinste Zahl, das am weitesten entfernte Datum oder die am weitesten entfernte Uhrzeit oder die Zeichenfolge zurück, die zuerst auftritt |
ZUSAMMENFASSUNG | SUM(<Ausdruck>) | Alle Nicht-NULL-Werte in Spalte summieren.. |
Zum Beispiel:
SELECT AVG([UnitPrice]) AS AvgUnitPrice, MIN([OrderQty]) AS MinQty, MAX([UnitPriceDiscount]) AS MaxDiscount FROM Sales.SalesOrderDetail;
Bei Verwendung der Aggregation in der SELECT-Klausel müssen alle eindeutigen Spalten in der SELECT-Liste als Eingabe für eine Aggregatfunktion verwendet oder in der GROUP BY-Klausel referenziert werden. Wenn dies fehlschlägt, tritt ein Fehler auf.
Beispielabfrage, die einen Fehler zurückgibt:
SELECT SalesOrderID,AVG(UnitPrice) AS AvgPrice FROM Sales.SalesOrderDetail;
Zurückgegebener Fehler:
Column 'Sales.SalesOrderDetail.SalesOrderID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Um dies zu beheben, entfernen Sie einfach die SalesOrderID-Spalte in der SELECT-Anweisung.
Neben der Verwendung von Aggregatfunktionen mit numerischen Daten können Datums-, Zeit- und Zeichendaten verwendet werden.
Beispiel mit MIN und CODE, um das nächstgelegene und das entfernteste Bestelldatum zu erhalten
SELECT MIN(OrderDate) AS Earliest, MAX(OrderDate) AS Lastest FROM Sales.SalesOrderHeader
Raumsynthese
SQL Server bietet mehrere Methoden zum Aggregieren von zwei einzelnen geometrischen oder geografischen Datenelementen.
Methode | Beschreiben |
STUnion | Gibt ein Objekt zurück, das die Vereinigung eines Geometrie-/Geo-Features mit einem anderen Geometrie-/Geo-Feature darstellt. |
STKreuzung | Gibt ein Objekt zurück, das die Schnittmenge eines Geometrie-/Geo-Features und eines anderen Geometrie-/Geo-Features darstellt |
STConvexHull | Gibt ein Objekt zurück, das den konvexen Teil eines geometrischen/geografischen Merkmals darstellt. Eine Menge von Punkten heißt konvex, wenn für zwei beliebige Punkte die gesamte Strecke in dieser Menge enthalten ist. Die konvexe Hülle einer Punktmenge ist die kleinste konvexe Menge, die die Menge enthält. Für jede gegebene Punktmenge gibt es nur eine konvexe Schale. |
Zum Beispiel:
SELECT geometry::Point(251,1,4326).STUnion(geometry::Point(252,2,4236));
Beispiel 2:
DECLARE @City1 geography SET @City1=geography::STPolyFromText('POLYGON((175.3 -41.5,183.3 -37.9,172.8 -34.6,175.3 -41.5))',4326) DECLARE @City2 geography SET @City2=geography::STPolyFromText('POLYGON((169.3 -46.6,174.3 -41.6,172.5 -40.7,166.3 -45.8,169.3 -46.6))',4326) DECLARE @CombinedCity geography=@City1.STUnion(@city2) SELECT @CombinedCity
Einige räumliche Aggregationsfunktionen
Union-Aggregat
Es führt die Zusammenführungsoperation an einem Satz geometrischer Objekte durch. Es kombiniert mehrere Geo-Objekte zu einem einzigen Geo-Objekt, wobei interne Grenzen, falls vorhanden, entfernt werden.
Zum Beispiel:
SELECT Geography::UnionAggregate (SpatialLocation) AS AVGLocation FROM Person.Address WHERE City='London';
Umschlagaggregat
Zum Beispiel:
SELECT Geography::EnvelopeAggregate(SpatialLocation) AS Location FROM Person.Address WHERE City='London'
Konvexes Hüllenaggregat
Zum Beispiel:
SELECT Geography::ConvexHullAggregate(SpatialLocation) AS Location FROM Person.Address WHERE City='Lodon'