GROUPING Aggregatfunktionen

Bei Verwendung in Verbindung mit Gruppierungssätzen und Supergruppen gibt die GROUPING-Funktion einen Wert zurück, der angibt, ob eine in einem GROUP BY-Ergebnis zurückgegebene Zeile eine Zeile ist, die von einem Gruppierungssatz generiert wurde, der die durch den Ausdruck dargestellte Spalte ausschließt.

Syntaxdiagramm lesenÜberspringe das visuelle SyntaxdiagrammGROUPING( Ausdruck)

Das Schema ist SYSIBM.

ausdruck

Ein Ausdruck, der mit einem Gruppierungsausdruck aus der GROUP BY-Klausel derselben Unterauswahl übereinstimmt.

Das Ergebnis der Funktion ist ein kleiner ganzzahliger Wert. Das Ergebnis ist einer der folgenden Werte:
1
Der Wert des Ausdrucks in der zurückgegebenen Zeile ist ein Nullwert, und die Zeile wurde von der Supergruppe generiert. Diese erzeugte Zeile kann verwendet werden, um Zwischensummenwerte für den Ausdruck "GROUP BY" bereitzustellen.
0
Der Wert ist ein anderer als der zuvor aufgeführte Wert.

Beispiel

   SELECT SALES_DATE, SALES_PERSON,
       SUM(SALES) AS UNITS_SOLD,
       GROUPING(SALES_DATE) AS DATE_GROUP,
       GROUPING(SALES_PERSON) AS SALES_GROUP
     FROM SALES
     GROUP BY CUBE (SALES_DATE, SALES_PERSON)
     ORDER BY SALES_DATE, SALES_PERSON;

Die vorherige Abfrage liefert Ergebnisse, die den folgenden ähneln:

SALES_DATE SALES_PERSON    UNITS_SOLD  DATE_GROUP  SALES_GROUP
---------- --------------- ----------- ----------- -----------
12/31/1995 GOUNOT                    1           0           0
12/31/1995 LEE                       6           0           0
12/31/1995 LUCCHESSI                 1           0           0
12/31/1995 -                         8           0           1
03/29/1996 GOUNOT                   11           0           0
03/29/1996 LEE                      12           0           0
03/29/1996 LUCCHESSI                 4           0           0
03/29/1996 -                        27           0           1
03/30/1996 GOUNOT                   21           0           0
03/30/1996 LEE                      21           0           0
03/30/1996 LUCCHESSI                 4           0           0
03/30/1996 -                        46           0           1
03/31/1996 GOUNOT                    3           0           0
03/31/1996 LEE                      27           0           0
03/31/1996 LUCCHESSI                 1           0           0
03/31/1996 -                        31           0           1
04/01/1996 GOUNOT                   14           0           0
04/01/1996 LEE                      25           0           0
04/01/1996 LUCCHESSI                 4           0           0
04/01/1996 -                        43           0           1
-          GOUNOT                   50           1           0
-          LEE                      91           1           0
-          LUCCHESSI                14           1           0
-          -                       155           1           1

Eine Anwendung kann eine SALES_DATE-Zwischensummenzeile identifizieren, da der Wert von DATE_GROUP 0 und der Wert von SALES_GROUP 1 ist. Eine SALES_PERSON -Zwischensummenzeile kann identifiziert werden, da der Wert von DATE_GROUP 1 und der Wert von SALES_GROUP 0 ist. Eine Zeile mit der Gesamtsumme kann durch den Wert 1 für DATE_GROUP und SALES_GROUP identifiziert werden.