

 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à.

# Funzione finestra SUM
<a name="r_WF_SUM"></a>

 La funzione finestra SUM restituisce la somma dei valori dell'espressione o della colonna di input. La funzione SUM funziona con i valori numerici e ignora i valori NULL.

## Sintassi
<a name="r_WF_SUM-synopsis"></a>

```
SUM ( [ ALL ] expression ) OVER
(
[ PARTITION BY expr_list ]
[ ORDER BY order_list 
                        frame_clause ]
)
```

## Arguments (Argomenti)
<a name="r_WF_SUM-arguments"></a>

 *expression *   
L'espressione o colonna di destinazione su cui viene eseguita la funzione. 

ALL   
Con l'argomento ALL, la funzione mantiene tutti i valori duplicati dall'espressione. ALL è il valore predefinito. DISTINCT non è supportato.

OVER   
Specifica le clausole finestra per le funzioni di aggregazione. La clausola OVER distingue le funzioni di aggregazione delle finestre dalle normali funzioni di aggregazione dell'insieme.

PARTITION BY *expr\$1list*   
Definisce la finestra per la funzione SUM in termini di una o più espressioni.

ORDER BY *order\$1list*   
Ordina le righe all'interno di ogni partizione. Se non viene specificato nessun PARTITION BY, ORDER BY utilizza l'intera tabella.

 *frame\$1clause*   
Se una clausola ORDER BY viene utilizzata per una funzione di aggregazione, è necessaria una clausola del frame esplicita. La clausola frame raffina l'insieme di righe in una finestra della funzione, includendo o escludendo insieme di righe all'interno del risultato ordinato. La clausola frame è composta dalla parola chiave ROWS e dagli specificatori associati. Per informazioni, consultare [Riepilogo della sintassi della funzione finestra](c_Window_functions.md#r_Window_function_synopsis).

## Tipi di dati
<a name="c_Supported_data_types_wf_sum"></a>

I tipi di argomenti supportati dalla funzione SUM sono SMALLINT, INTEGER, BIGINT, NUMERIC, DECIMAL, REAL e DOUBLE PRECISION.

I tipi di restituzione supportati dalla funzione SUM sono: 
+ BIGINT per gli argomenti SMALLINT oppure INTEGER
+ NUMERIC per gli argomenti BIGINT
+ DOUBLE PRECISION per argomenti del numero in virgola mobile

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

Nel seguente esempio viene creata una somma cumulativa (rolling) delle quantità di vendita ordinate per data e ID vendite: 

```
select salesid, dateid, sellerid, qty,
sum(qty) over (order by dateid, salesid rows unbounded preceding) as sum
from winsales
order by 2,1;

salesid |   dateid   | sellerid | qty | sum
---------+------------+----------+-----+-----
30001 | 2003-08-02 |        3 |  10 |  10
10001 | 2003-12-24 |        1 |  10 |  20
10005 | 2003-12-24 |        1 |  30 |  50
40001 | 2004-01-09 |        4 |  40 |  90
10006 | 2004-01-18 |        1 |  10 | 100
20001 | 2004-02-12 |        2 |  20 | 120
40005 | 2004-02-12 |        4 |  10 | 130
20002 | 2004-02-16 |        2 |  20 | 150
30003 | 2004-04-18 |        3 |  15 | 165
30004 | 2004-04-18 |        3 |  20 | 185
30007 | 2004-09-07 |        3 |  30 | 215
(11 rows)
```

 Per una descrizione della tabella WINSALES, consultare [Tabella di esempio per gli esempi della funzione finestra](c_Window_functions.md#r_Window_function_example).

Nel seguente esempio viene creata una somma cumulativa (rolling) delle quantità di vendita per data, i risultati sono partizionati per ID venditore e all'interno della partizione i risultati sono ordinati per data e ID vendite: 

```
select salesid, dateid, sellerid, qty,
sum(qty) over (partition by sellerid
order by dateid, salesid rows unbounded preceding) as sum
from winsales
order by 2,1;

salesid |   dateid   | sellerid | qty | sum
---------+------------+----------+-----+-----
30001 | 2003-08-02 |        3 |  10 |  10
10001 | 2003-12-24 |        1 |  10 |  10
10005 | 2003-12-24 |        1 |  30 |  40
40001 | 2004-01-09 |        4 |  40 |  40
10006 | 2004-01-18 |        1 |  10 |  50
20001 | 2004-02-12 |        2 |  20 |  20
40005 | 2004-02-12 |        4 |  10 |  50
20002 | 2004-02-16 |        2 |  20 |  40
30003 | 2004-04-18 |        3 |  15 |  25
30004 | 2004-04-18 |        3 |  20 |  45
30007 | 2004-09-07 |        3 |  30 |  75
(11 rows)
```

Nel seguente esempio sono numerate tutte le righe nel set di risultati, ordinate dalle colonne SELLERID e SALESID: 

```
select salesid, sellerid, qty,
sum(1) over (order by sellerid, salesid rows unbounded preceding) as rownum
from winsales
order by 2,1;

salesid | sellerid |  qty | rownum
--------+----------+------+--------
10001 |        1 |   10 |     1
10005 |        1 |   30 |     2
10006 |        1 |   10 |     3
20001 |        2 |   20 |     4
20002 |        2 |   20 |     5
30001 |        3 |   10 |     6
30003 |        3 |   15 |     7
30004 |        3 |   20 |     8
30007 |        3 |   30 |     9
40001 |        4 |   40 |    10
40005 |        4 |   10 |    11
(11 rows)
```

Per una descrizione della tabella WINSALES, consultare [Tabella di esempio per gli esempi della funzione finestra](c_Window_functions.md#r_Window_function_example). 

Nel seguente esempio vengono numerate tutte le righe nel set di risultati e i risultati sono partizionati per SELLERID e ordinati per SELLERID e SALESID e all'interno della partizione: 

```
select salesid, sellerid, qty,
sum(1) over (partition by sellerid
order by sellerid, salesid rows unbounded preceding) as rownum
from winsales
order by 2,1;

salesid | sellerid | qty | rownum
---------+----------+-----+--------
10001 |        1 |  10 |      1
10005 |        1 |  30 |      2
10006 |        1 |  10 |      3
20001 |        2 |  20 |      1
20002 |        2 |  20 |      2
30001 |        3 |  10 |      1
30003 |        3 |  15 |      2
30004 |        3 |  20 |      3
30007 |        3 |  30 |      4
40001 |        4 |  40 |      1
40005 |        4 |  10 |      2
(11 rows)
```