

 Amazon Redshift unterstützt UDFs ab Patch 198 nicht mehr die Erstellung von neuem Python. Das bestehende Python UDFs wird bis zum 30. Juni 2026 weiterhin funktionieren. Weitere Informationen finden Sie im [Blog-Posting](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# GROUP BY-Klausel
<a name="r_GROUP_BY_clause"></a>

Die GROUP BY-Klausel identifiziert die Gruppierungsspalten für die Abfrage. Sie wird verwendet, um die Zeilen in einer Tabelle zu gruppieren, die in allen aufgelisteten Spalten dieselben Werte haben. Die Reihenfolge, in der die Spalten aufgeführt werden, spielt keine Rolle. Das Ergebnis besteht darin, jeden Satz von Zeilen mit gemeinsamen Werten zu einer einzelnen Gruppenzeile zusammenzufassen, die alle Zeilen in der Gruppe darstellt. Mit GROUP BY können Sie Redundanzen in der Ausgabe beseitigen und Aggregate berechnen, die für die Gruppen gelten. Gruppierungsspalten müssen deklariert werden, wenn die Abfrage aggregierte Werte mit Standardfunktionen wie SUM, AVG und COUNT berechnet. Weitere Informationen finden Sie unter [Aggregationsfunktionen](c_Aggregate_Functions.md).

## Syntax
<a name="r_GROUP_BY_clause-syntax"></a>

```
[ GROUP BY  expression [, ...] | ALL | aggregation_extension  ]
```

wobei *aggregation\$1extension* eins der folgenden Elemente ist:

```
GROUPING SETS ( () | aggregation_extension [, ...] ) |
ROLLUP ( expr [, ...] ) |
CUBE ( expr [, ...] )
```

## Parameters
<a name="r_GROUP_BY_clause-parameters"></a>

 *expression*  
Der Liste der Spalten oder Ausdrücke muss der Liste der nicht aggregierten Ausdrücke in der Auswahlliste der Abfrage entsprechen. Betrachten Sie beispielsweise die folgende einfache Abfrage.  

```
select listid, eventid, sum(pricepaid) as revenue,
count(qtysold) as numtix
from sales
group by listid, eventid
order by 3, 4, 2, 1
limit 5;

listid | eventid | revenue | numtix
-------+---------+---------+--------
89397  |      47 |   20.00 |      1
106590 |      76 |   20.00 |      1
124683 |     393 |   20.00 |      1
103037 |     403 |   20.00 |      1
147685 |     429 |   20.00 |      1
(5 rows)
```
In dieser Abfrage besteht die Auswahlliste aus zwei aggregierten Ausdrücken. Der erste verwendet die SUM-Funktion und der zweite verwendet die COUNT-Funktion. Die übrigen beiden Spalten, LISTID und EVENTID, müssen als Gruppierungsspalten deklariert werden.  
Ausdrücke in der -Klausel können ebenfalls die Auswahlliste durch Verwendung von Ordinalzahlen referenzieren. Das vorherige Beispiel könnte beispielsweise wie folgt abgekürzt werden.  

```
select listid, eventid, sum(pricepaid) as revenue,
count(qtysold) as numtix
from sales
group by 1,2
order by 3, 4, 2, 1
limit 5;

listid | eventid | revenue | numtix
-------+---------+---------+--------
89397  |      47 |   20.00 |      1
106590 |      76 |   20.00 |      1
124683 |     393 |   20.00 |      1
103037 |     403 |   20.00 |      1
147685 |     429 |   20.00 |      1
(5 rows)
```

ALL  
ALL gibt an, dass nach allen in der SELECT-Liste angegebenen Spalten gruppiert werden soll, mit Ausnahme der aggregierten Spalten. Sehen Sie sich beispielsweise die folgende Abfrage an, die nach `col1` und `col2` gruppiert, ohne sie in der Klausel GROUP BY einzeln angeben zu müssen. Die Spalte `col3` ist das Argument der Funktion `SUM` und daher nicht gruppiert.  

```
SELECT col1, col2 sum(col3) FROM testtable GROUP BY ALL
```
Wenn Sie für eine Spalte in der SELECT-Liste EXCLUDE angeben, gruppiert die Klausel GROUP BY ALL die Ergebnisse nicht anhand dieser spezifischen Spalte.  

```
SELECT * EXCLUDE col3 FROM testtable GROUP BY ALL
```

 * *aggregation\$1extension* *   
Sie können die Aggregationserweiterungen GROUPING SETS, ROLLUP und CUBE verwenden, um die Arbeit mehrerer GROUP BY-Operationen in einer einzigen Anweisung auszuführen. Weitere Informationen zu Aggregationserweiterungen und verwandten Funktionen finden Sie unter [Aggregationserweiterungen](r_GROUP_BY_aggregation-extensions.md). 

## Beispiele
<a name="r_GROUP_BY_clause-examples"></a>

In den folgenden Beispielen wird die Tabelle SALES verwendet, die folgende Spalten enthält: salesid, listid, sellerid, buyerid, eventid, dateid, qtysold, pricepaid, commission und saletime. Weitere Informationen zur Tabelle SALES finden Sie unter [Beispieldatenbank](c_sampledb.md).

Die folgende Beispielabfrage gruppiert nach `salesid` und `listid`, ohne sie in der Klausel GROUP BY einzeln angeben zu müssen. Die Spalte `qtysold` ist das Argument der Funktion `SUM` und daher nicht gruppiert.

```
SELECT salesid, listid, sum(qtysold) FROM sales GROUP BY ALL;

salesid | listid  | sum
--------+---------+------
33095   | 36572   | 2	
88268   | 100813  | 4	
110917  | 127048  | 1	
...
```

Die folgende Beispielabfrage schließt mehrere Spalten in der SELECT-Liste aus. Daher gruppiert GROUP BY ALL nur die Gruppen salesid und listid.

```
SELECT * EXCLUDE sellerid, buyerid, eventid, dateid, qtysold, pricepaid, commission, saletime 
FROM sales GROUP BY ALL;

salesid | listid 
--------+---------
33095   | 36572   	
88268   | 100813 	
110917  | 127048 	
...
```