

 O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a [publicação de blog ](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Cláusula GROUP BY
<a name="r_GROUP_BY_clause"></a>

A cláusula GROUP BY identifica as colunas de agrupamento para a consulta. É usada para agrupar as linhas em uma tabela que têm os mesmos valores em todas as colunas listadas. A ordem em que as colunas são listadas não importa. O resultado é a combinação de cada conjunto de linhas com valores comuns em uma linha que representa todas as linhas do grupo. Use GROUP BY para eliminar a redundância na saída e calcular agregados que se aplicam aos grupos. As colunas de agrupamento devem ser declaradas quando a consulta computa agregadas com funções padrão como SUM, AVG e COUNT. Para obter mais informações, consulte [Funções agregadas](c_Aggregate_Functions.md).

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

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

em que *aggregation\_extension* é uma das seguintes:

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

## Parâmetros
<a name="r_GROUP_BY_clause-parameters"></a>

 *expressão*  
A lista de colunas ou de expressões deve corresponder à lista de expressões não agregadas na lista de seleção da consulta. Por exemplo, considere a seguinte consulta simples.  

```
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)
```
Nesta consulta, a lista de seleção consiste em duas expressões agregadas. A primeira usa a função SUM e a segunda usa a função COUNT. As duas colunas restantes, LISTID e EVENTID, devem ser declaradas como colunas de agrupamento.  
As expressões na cláusula GROUP BY também podem fazer referência à lista de seleção usando números ordinais. O exemplo anterior poderia ser abreviado da seguinte forma.  

```
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 indica agrupar por todas as colunas especificadas na lista SELECT, exceto as agregadas. Por exemplo, pense na consulta a seguir, que agrupa por `col1` e `col2` sem precisar especificá-las individualmente na cláusula GROUP BY. A coluna `col3` é o argumento da função `SUM` e, portanto, não está agrupada.  

```
SELECT col1, col2 sum(col3) FROM testtable GROUP BY ALL
```
Se você excluir uma coluna na lista SELECT, a cláusula GROUP BY ALL não agrupará os resultados com base nessa coluna específica.  

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

 * *aggregation\_extension* *   
Você pode usar as extensões de agregação GROUPING SETS, ROLLUP e CUBE para realizar o trabalho de várias operações GROUP BY em uma única instrução. Para obter mais informações sobre extensões de agregação e funções relacionadas, consulte [Extensões de agregação](r_GROUP_BY_aggregation-extensions.md). 

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

Os exemplos a seguir usam a tabela SALES que contém as colunas: salesid, listid, sellerid, buyerid, eventid, dateid, qtysold, pricepaid, commission e saletime. Para ter mais informações sobre a tabela SALES, consulte [Banco de dados de exemplo](c_sampledb.md).

O exemplo de consulta a seguir agrupa por `salesid` e `listid` sem precisar especificá-las individualmente na cláusula GROUP BY. A coluna `qtysold` é o argumento da função `SUM` e, portanto, não está agrupada.

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

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

O exemplo de consulta a seguir exclui várias colunas na lista SELECT, então GROUP BY ALL agrupa somente salesid e listid.

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

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