

 Amazon Redshift non supporterà più la creazione di nuovi Python UDFs a partire dalla Patch 198. Python esistente UDFs continuerà a funzionare fino al 30 giugno 2026. Per ulteriori informazioni, consulta il [post del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Clausola GROUP BY
<a name="r_GROUP_BY_clause"></a>

La clausola GROUP BY identifica le colonne di raggruppamento per la query. Viene utilizzata per raggruppare le righe in una tabella che hanno gli stessi valori in tutte le colonne elencate. L’ordine in cui sono elencate le colonne non è importante. Il risultato è combinare ogni set di righe con valori comuni in un’unica riga di gruppo che rappresenta tutte le righe del gruppo. Utilizza una clausola GROUP BY per eliminare la ridondanza nell’output e calcolare gli aggregati che si applicano ai gruppi. Le colonne di raggruppamento devono essere dichiarate quando la query calcola gli aggregati con le funzioni standard, ad esempio SUM, AVG e COUNT. Per ulteriori informazioni, consulta [Funzioni di aggregazione](c_Aggregate_Functions.md).

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

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

dove *aggregation\_extension* è uno dei seguenti:

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

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

 *espressione*  
L'elenco di colonne o espressioni deve corrispondere all'elenco di espressioni non aggregate dell'elenco di selezione della query. A titolo illustrativo, prendi in considerazione la query semplice riportata di seguito.  

```
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 questa query, l'elenco di selezione è composto da due espressioni di aggregazione. La prima utilizza la funzione SUM e la seconda utilizza la funzione COUNT. Le restanti due colonne, LISTID ed EVENTID, devono essere dichiarate come colonne di raggruppamento.  
Le espressioni nella clausola GROUP BY possono anche fare riferimento all'elenco di selezione usando numeri ordinali. A titolo illustrativo, l'esempio precedente potrebbe essere abbreviato come segue.  

```
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 di raggruppare in base a tutte le colonne specificate nell’elenco SELECT a eccezione di quelle aggregate. Ad esempio, considera la seguente query che raggruppa in base a `col1` e `col2` senza doverle specificare singolarmente nella clausola GROUP BY. La colonna `col3` è l’argomento della funzione `SUM` e quindi non è raggruppata.  

```
SELECT col1, col2 sum(col3) FROM testtable GROUP BY ALL
```
Se ESCLUDI una colonna nell’elenco SELECT, la clausola GROUP BY ALL non raggruppa i risultati in base a tale colonna specifica.  

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

 * *aggregation\_extension* *   
È possibile utilizzare le estensioni di aggregazione GROUPING SETS, ROLLUP e CUBE per eseguire il lavoro di più operazioni GROUP BY in una singola istruzione. Per ulteriori informazioni sulle estensioni di aggregazione e sulle funzioni correlate, consulta [Estensioni di aggregazione](r_GROUP_BY_aggregation-extensions.md). 

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

Gli esempi seguenti utilizzano la tabella SALES che contiene le colonne: salesid, listid, sellerid, buyerid, eventid, dateid, qtysold, pricepaid, commission e saletime. Per ulteriori informazioni sulla tabella SALES, consulta [Database di esempio](c_sampledb.md).

La query di esempio seguente raggruppa i gruppi in base a `salesid` e `listid` senza doverli specificare singolarmente nella clausola GROUP BY. La colonna `qtysold` è l’argomento della funzione `SUM` e quindi non è raggruppata.

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

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

La query di esempio seguente esclude diverse colonne nell’elenco SELECT, pertanto GROUP BY ALL raggruppa solo 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 	
...
```