

 Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del parche 198. Las UDF de Python existentes seguirán funcionando hasta el 30 de junio de 2026. Para obtener más información, consulte la [publicación del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# Función de ventana SUM
<a name="r_WF_SUM"></a>

 La función de ventana SUM devuelve la suma de la columna de entrada o valores de la expresión. La función SUM funciona con valores numéricos e ignora los valores NULL.

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

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

## Argumentos
<a name="r_WF_SUM-arguments"></a>

 *expresión *   
La columna o expresión de destino sobre la que opera la función. 

ALL   
Con el argumento ALL, la función retiene todos los valores duplicados de la expresión. El valor predeterminado es ALL. DISTINCT no se admite.

OVER   
Especifica las cláusulas de ventana para las funciones de agregación. La cláusula OVER distingue funciones de agregación de ventana de las funciones de agregación de conjuntos normales.

PARTITION BY *expr\$1list*   
Define la ventana para la función SUM en términos de una o más expresiones.

ORDER BY *order\$1list*   
Ordena las filas dentro de cada partición. Si no se especifica PARTITION BY, ORDER BY utiliza toda la tabla.

 *frame\$1clause*   
Si se utiliza una cláusula ORDER BY para una función de agregación, se necesita una cláusula de marco explícita. La cláusula de marco limita el conjunto de filas en una ventana de función e incluye o excluye conjuntos de filas dentro del resultado ordenado. La cláusula de marco consta de la palabra clave ROWS y de los especificadores correspondientes. Consulte [Resumen de la sintaxis de la función de ventana](c_Window_functions.md#r_Window_function_synopsis).

## Tipos de datos
<a name="c_Supported_data_types_wf_sum"></a>

Los tipos de argumento compatibles con la función SUM son SMALLINT, INTEGER, BIGINT, NUMERIC, DECIMAL, REAL y DOUBLE PRECISION.

Los tipos de retorno compatibles con la función SUM son los siguientes: 
+ BIGINT para los argumentos SMALLINT o INTEGER
+ NUMERIC para argumentos BIGINT
+ DOUBLE PRECISION para argumentos de punto flotante

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

En el siguiente ejemplo, se crea una suma acumulativa (continua) de cantidades de ventas ordenadas por fecha e ID de ventas: 

```
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)
```

 Para ver una descripción de la tabla WINSALES, consulte [Tabla de muestra para ejemplos de funciones de ventana](c_Window_functions.md#r_Window_function_example).

En el siguiente ejemplo, se crea una suma acumulativa (continua) de cantidades de ventas por fecha, se dividen los resultados por ID de vendedor y se ordenan los resultados por fecha e ID de ventas dentro de la partición: 

```
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)
```

En el siguiente ejemplo, se enumeran en forma secuencial todas las filas del conjunto de resultados, ordenadas por las columnas SELLERID y 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)
```

Para ver una descripción de la tabla WINSALES, consulte [Tabla de muestra para ejemplos de funciones de ventana](c_Window_functions.md#r_Window_function_example). 

En el siguiente ejemplo, se enumeran en forma secuencial todas las filas en el conjunto de resultados, se dividen los resultados por SELLERID y se ordenan los resultados por SELLERID y SALESID dentro de la partición: 

```
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)
```