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

SAP Sybase SQL Anywhere 16.0 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Abfragen und Datenänderung » OLAP-Unterstützung » GROUP BY-Klauselerweiterungen

 

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-Werte als Platzhalter benutzt werden, besteht die Gefahr, diese Platzhalter mit den tatsächlichen NULL-Werten in den Daten zu verwechseln. Die GROUPING-Funktion hilft Ihnen bei der Unterscheidung des Platzhalters NULL vom Datenwert NULL.

 Siehe auch
 Beispiel
 Leere Gruppierungsspezifikation angeben
 Doppelte Gruppierungskombinationen festlegen
 Empfehlungen zum Format
 Siehe auch