Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Daten abfragen und ändern » OLAP-Unterstützung » Erweiterungen zur GROUP BY-Klausel

 

GROUP BY GROUPING SETS

Die GROUPING SETS-Klausel ist eine Erweiterung zur GROUP BY-Klausel einer SELECT-Anweisung. Die GROUPING SETS-Klausel ermöglicht die Gruppierung der Ergebnisse auf mehrere Arten, ohne mehrere SELECT-Anweisungen benutzen zu müssen. Damit wird die Reaktionszeit verringert und die Performance verbessert.

Die folgenden beiden Abfrageanweisungen sind beispielsweise semantisch gleichwertig: Die zweite Abfrage definiert die Gruppierungskriterien jedoch effizienter, da eine GROUP BY GROUPING SETS-Klausel verwendet wird.

Mehrfachgruppierungen mithilfe von SELECT-Anweisungen:



SELECT NULL, NULL, NULL, COUNT( * ) AS Cnt
FROM Customers
WHERE State IN ( 'MB' , 'KS' )
   UNION ALL
SELECT City, State, NULL, COUNT( * ) AS Cnt
FROM Customers
WHERE State IN ( 'MB' , 'KS' )
GROUP BY City, State
   UNION ALL
SELECT NULL, NULL, CompanyName, COUNT( * ) AS Cnt
FROM Customers
WHERE State IN ( 'MB' , 'KS' )
GROUP BY CompanyName;

Mehrfachgruppierungen mithilfe von GROUPING SETS:

SELECT City, State, CompanyName, COUNT( * ) AS Cnt
FROM Customers
WHERE State IN ( 'MB' , 'KS' )
GROUP BY GROUPING SETS( ( City, State ), ( CompanyName ) , ( ) );

Beide Methoden liefern die gleichen Ergebnisse:

City State CompanyName Cnt
1 (NULL) (NULL) (NULL) 8
2 (NULL) (NULL) Cooper Inc. 1
3 (NULL) (NULL) Westend Dealers 1
4 (NULL) (NULL) Toto's Active Wear 1
5 (NULL) (NULL) North Land Trading 1
6 (NULL) (NULL) The Ultimate 1
7 (NULL) (NULL) Molly's 1
8 (NULL) (NULL) Overland Army Navy 1
9 (NULL) (NULL) Out of Town Sports 1
10 'Pembroke' 'MB' (NULL) 4
11 'Petersburg' 'KS' (NULL) 1
12 'Drayton' 'KS' (NULL) 3

Die Zeilen 2 - 9 sind die Zeilen, die durch die Gruppierung nach "CompanyName" generiert wurden. Die Zeilen 10 - 12 sind die Zeilen, die durch die Gruppierung nach der Kombination von "City" und "State" generiert wurden. Die Zeile 1 ist die Gesamtsumme, die durch die leere Gruppierungskombination repräsentiert wird, welche durch ein Klammernpaar angegeben wird (). Die leere Gruppierungskombination repräsentiert eine einzelne Partition aller Zeilen in der Eingabe für die GROUP BY-Klausel.

Beachten Sie, dass NULL als Platzhalter für alle Ausdrücke verwendet wird, die nicht in einer Gruppierungskombination benutzt werden, da die Ergebnismengen kombinierbar sein müssen. Die Zeilen 2 - 9 ergeben sich beispielsweise aus der zweiten Gruppierungskombination in der Abfrage (CompanyName). Da diese Gruppierungskombination weder "City" noch "State" als Ausdrücke enthielt, enthalten die Werte für "City" und "State" für die Zeilen 2 - 9 den Platzhalter NULL, während die Werte in "CompanyName" die unterschiedlichen Werte enthalten, die in "CompanyName" vorkommen.

Da NULL als Platzhalter benutzt wird, wird dieser leicht mit den tatsächlichen NULL-Werten in den Daten verwechselt. Die GROUPING-Funktion hilft Ihnen bei der Unterscheidung des Platzhalters NULL vom Datenwert NULL. Siehe NULL-Platzhalter mithilfe der GROUPING-Funktion löschen.

 Beispiel
 Leere Gruppierungsspezifikation angeben
 Doppelte Gruppierungskombinationen festlegen
 Empfehlungen zum Format